C++相談室 part137

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 12c3-4saf)
垢版 |
2018/08/27(月) 16:02:00.94ID:vY3QDx2y0
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part137
https://mevius.5ch.net/test/read.cgi/tech/1531558382/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)

----- テンプレ ここまで -----
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
142デフォルトの名無しさん (ワッチョイ 65b3-J7KC)
垢版 |
2018/09/01(土) 18:06:49.23ID:IaxL4QGW0
C++はわしが育てた。
2018/09/01(土) 18:20:12.88ID:TMvFd8Nda
>>141
.0.5%ぐらいは真のC++プログラマーがいると信じたい
今まで出会ったことがない
2018/09/01(土) 19:13:37.84ID:np0z0HoI0
>>141
「完全な理解」に到達できないようゴールを動かしつづける黒幕、
てのがいそうな感じね。

日々の学習が新規格に追いつかないヘボの愚痴だけど。
145デフォルトの名無しさん (ワッチョイ 23d2-gxLD)
垢版 |
2018/09/01(土) 19:30:28.67ID:YT761AP20
実際これ本物じゃないかと思うよね
http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html
146デフォルトの名無しさん (ワッチョイ 65b3-J7KC)
垢版 |
2018/09/01(土) 20:34:01.15ID:IaxL4QGW0
>>145
Javaで読み替えてみ。
2018/09/01(土) 20:50:59.81ID:z2qK7ugE0
javaに必要だったのはGCじゃなくてデストラクタだったりして。
噂によると、参照切るために使い終わったらオブジェクトにNULL入れてるらしい。
それってfreeと違うんかい?
2018/09/01(土) 20:53:31.39ID:xvCOhCpk0
今使われてるあらゆる言語に置き換えられそう
149デフォルトの名無しさん (ワッチョイ 65b3-J7KC)
垢版 |
2018/09/01(土) 23:46:43.62ID:IaxL4QGW0
進撃の巨人、エンドオブザワールド見たら、ミカサがいきなり不倫してて子供までいる設定に代わっててびっくりしたわ。
原作ではそんな子じゃなかったのに。
150120 (ワッチョイ 1dc3-4YxK)
垢版 |
2018/09/02(日) 07:00:47.93ID:HcdhtgGT0
>>120です。レス少し遅くなっちゃったけどレスくれたみんな詳しくありがとう
とりあえずじっくり勉強してみることにするわ
このご時世、就活を意識するならPythonのほうが優先度は高そう感じがするけど…

就活についてのアドバイスしてくれた人がいるけど、納得した。
「できます」「つかえます」って基準が不明瞭だからさして効果はないか。
ちなみにどんなものを作れば有利に働くかな?
趣味でプログラミングをしているけど何か作りたいものがあってはじめたんじゃなくて競技プログラミングが面白そう、という理由ではじめて競技プログラミングをメインにやってた
Cでならシューティングゲームを作ったことはあるけどこれはあまり就活では役に立ちそうにないかな
2018/09/02(日) 07:15:15.45ID:fnBlw2CS0
>>150
査読論文
100万PVを超えるwebサイト
アプリのレビュー経験
上記以外はマイナスになるだけ
2018/09/02(日) 07:18:34.72ID:T+JOOtu00
会社によるし何したいかによる
言語仕様やコンパイラに強い人が欲しい会社もあるし
ハードウェアやアセンブリレベルに強い人が欲しい会社もあるし
CGとか映像処理に強い人が欲しい会社もあるし
Windowsのことなら任せろって人が欲しい会社もあるし
OSS界隈の事情に詳しい人が欲しい会社もあるし
コード土方なんかよりパワポのプロが欲しい会社もある

頑張って
2018/09/02(日) 08:54:14.95ID:5WqNet320
組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、MISRA‐C研究会、2006

日本の大企業から、C の専門家、数十人が集まって、この本を書いたけど、
規格について詳しい人は、いなかった

規格書の条文を組み合わせたときに、どういう現象が起こるかわからない。
このレベルの人では、その恐ろしさをよく知っている

ルールの組み合わせ爆発が起こるから、無限!
だから規格を保証できない

よく、わからなかったから規格書を読めっていう奴がいるけど、
そういう奴は、組み合わせ爆発の恐ろしさを、何もわかっていない
2018/09/02(日) 10:18:27.88ID:5WqNet320
言語の入門書を読んで、文法だけを知っている人なんて、いらない。
文法だけじゃ、仕事はできない。
仕事とは、システムを作る事だから

だから企業は、コンピューターリテラシーのある人が欲しい。
OS の知識。システムの運用構築。
デザインパターン・アルゴリズム・データベースなど、すべての範囲

大量の勉強・資格も必要。
その人が到達したレベルの証明書

Ruby が出来たら、Python もわかる。
Rubyよりも面倒くさいのに、なにも、Pythonで書く理由がない

AI・数学系の仕事があって、初めてやるもの

float 変数にずっと、1を足し続けていくと、どうなるでしょう?
ちょっとした質問をされても、勉強していないと答えられないだろ
2018/09/02(日) 10:55:34.36ID:T+JOOtu00
>float 変数にずっと、1を足し続けていくと、どうなるでしょう?
答えてどうぞ
ちょっとした質問なんだろ?答えて
2018/09/02(日) 11:00:46.35ID:AnLHGx5M0
突然ケンカ売り始めてワロタ
2018/09/02(日) 11:38:28.02ID:5WqNet320
120 みたいな「入門書を読んで、出来ます」っていうような奴は、よくいる。
文法をかじったのと、システムを作るって言うのは、全く違う

コンピューターリテラシーが無いと話にならない。
文法よりも、情報処理資格を取った方が、よほど使える

8進数の637 を、16進数で表示しろとか、こういう問題

文法よりも、システムを作るための基礎体力がある人。
登山するのにも、まず基礎体力だろ
2018/09/02(日) 11:40:33.24ID:T+JOOtu00
>>157
逃げんな答えろ

>float 変数にずっと、1を足し続けていくと、どうなるでしょう?
正確に答えて
2018/09/02(日) 12:11:20.54ID:d5Sj8H4uM
>>158
プログラムで実行すればいいじゃん
馬鹿?
2018/09/02(日) 12:52:47.96ID:GR8jnF/50
>>158
環境による、以上!
2018/09/02(日) 14:37:45.13ID:5hf5Gg6np
>>150
>Cでならシューティングゲームを作ったことはあるけどこれはあまり就活では役に立ちそうにないかな
そっちの方が大きいと思うが・・w
ソフト一本作ったかどうか、ってのは大きいよ
162デフォルトの名無しさん (ワッチョイ 5b9f-JHVF)
垢版 |
2018/09/02(日) 14:52:19.54ID:4Jf6YH6e0
>>150
> Cでならシューティングゲームを作ったことはあるけどこれはあまり就活では役に立ちそうにないかな

そうかなあ?何処に就職しようとするかで変わると思うんだが、しかし、そこまでできるなら結構有利なネタになると思うんだけど。
2018/09/02(日) 15:50:29.01ID:vK23Frpo0
とにもかくにも何かを「完成させる」ってのは強いと思うよ。
プログラミングに関する色んな理屈は研究されているけれども、
現実の問題に対して適用できる能力はまた別問題だからね。
深く知っているやつよりも目的を達成できるやつが偉い。

もちろん深く知っている方が色々な問題に対して出来ることは多いはずだけど、
実際にやったという見える実績がないと評価しようがないもの。

評価基準は評価する側のことだから、
ひょっとするとあまり気にしない評価者もいるかもしれないし、
高く評価するかもしれないということはある。
でも、無かったら何にも無いだけ。
2018/09/02(日) 17:18:56.14ID:oSO4LvdH0
>>163
>とにもかくにも何かを「完成させる」ってのは強い
強いですね…
ある程度できてしまうと、情熱が失せるというか妥協するというか手を抜くというか
それを完成形に持っていくのには知性ではなく意志が必要だとおもいます、そして現在は知性(主知主義)よりも意志(主意主義)を評価する時代かと

私についていえば直近は
https://mevius.5ch.net/test/read.cgi/tech/1524570314/795-796
に執心していたのが、α版
https://mevius.5ch.net/test/read.cgi/tech/1434079972/52
ができてしまうと、ある意味どうでもよくなって、β版
https://mevius.5ch.net/test/read.cgi/tech/1434079972/53
を書き上げた頃は、変てこな義務感だけでいわば青息吐息で動いていた感じです、たぶんこれ以上手をいれることはないでしょう、全然未完成なんですけれども…
2018/09/02(日) 17:40:53.37ID:d5Sj8H4uM
ゲームってプログラムより素材でしょ
2018/09/02(日) 17:43:17.01ID:HUwXytGW0
まるでプロには知性が足りないとでも言わんばかりだな
君の書いたソレは売り物になるレベルのソフトなの?
2018/09/02(日) 17:44:50.35ID:HUwXytGW0
>>165
アホぬかせ
2018/09/02(日) 17:56:52.92ID:oSO4LvdH0
>>166
どこを縦読みすれば?
169デフォルトの名無しさん (ワッチョイ 5b9f-JHVF)
垢版 |
2018/09/02(日) 18:21:41.50ID:4Jf6YH6e0

2018/09/02(日) 19:11:21.08ID:p4iMlD/t0
>>165 の意図を正しく読み取ってないかも知れんけど…。

プレイヤーにとっては、凄いプログラムで動いてるゲームより
〜さんがキャラクタ描いてる、〜さんが声アテている、の方が
購入の理由や評価の基準になってる、という面では
「プログラムより素材」と言えるかも。

テトリスやぷよぷよが売れたときは、
また別の意味で「プログラムより素材」だったんだけど。
現在ではマインクラフトなどかな。


技術的にスゲーって感じたゲームはPS2の「大神」だったかな。
それ以後あんまり遊んでないし。
2018/09/02(日) 19:17:19.67ID:KDgwy3t20
君らいっぺん3Dのゲームがどういう技術で成り立ってるか調べたらいいよ
全く想像つかないのに適当こいてるだろ?
172デフォルトの名無しさん (ワッチョイ 65b3-J7KC)
垢版 |
2018/09/02(日) 19:26:28.00ID:fUkDgbHp0
>>171
しらべてみたら監督技術、プロデュース技術、ディレクション技術なんだな。
一番重要なのは資金調達技術だって。
思ってたのと全然違うわ。
2018/09/02(日) 19:29:29.85ID:KDgwy3t20
アホだろお前
174デフォルトの名無しさん (ワッチョイ 65b3-J7KC)
垢版 |
2018/09/02(日) 19:32:57.27ID:fUkDgbHp0
ゲーム業界ではパワポを使いこなせないと会議で発言権を得られないって聞いたことがあるな。
175デフォルトの名無しさん (ワッチョイ 65b3-J7KC)
垢版 |
2018/09/02(日) 19:35:22.26ID:fUkDgbHp0
そういえばジョブス氏も皆さんの前でお話しするときはパワポ使ってたよね。
WindowsよりOSXというお話をするときでさえ、スクリーンにはパワポが映ってた。
176デフォルトの名無しさん (ワッチョイ 5b9f-JHVF)
垢版 |
2018/09/02(日) 19:36:03.23ID:4Jf6YH6e0
話がいつの間にか売れるゲームの話になってる?
元の話は学生が就活時にCでゲーム作った事が役に立つかって話だったと思うが。
177デフォルトの名無しさん (ワッチョイ 5b9f-JHVF)
垢版 |
2018/09/02(日) 19:37:22.81ID:4Jf6YH6e0
>>175
Macで動くやつではなく?
2018/09/02(日) 19:55:02.00ID:KDgwy3t20
>>176
なってないw
QZと165に釘さしたかっただけ

別に趣味グラマを否定したいわけじゃないけど、一本人が使いたがるようなレベルのソフトを作ろうとすると、言語の知識だけではない様々な現実的な問題に直面するだろ

それを乗り越えたかどうかってのは採用担当の評価に大きく関わってくると思うけどね

はっきり言うと、QZのレスは、それを乗り越えるのは意志だけ(つまりソフトを作り上げるために必要になってくる知識など、言語の知識以外には無い)と暗に決めつけてる
最近そういう傲慢な趣味グラマがC++界隈でよく見受けられるけど、そういうの良くないよマジで
179デフォルトの名無しさん (ワッチョイ 0580-rkYf)
垢版 |
2018/09/02(日) 20:08:55.68ID:Tb3tt8fk0
それでコードはもうすでに自分は書けるもんだと勝手に思い込んで
まともな教育を受けてない低学歴知恵遅れのアホなくせに思い上がってるウンコが
この板にはわんさかいる

視野が狭いとそうなる
低学歴知恵遅れはどうしても視野が狭くなる
知見の範囲が限られるからな
2018/09/02(日) 20:09:48.00ID:oSO4LvdH0
>>178
>QZのレスは、それを乗り越えるのは意志**だけ**

>>164 ではそうはいっていませんよ、意志の重要性を主張していますが、知性(=知識)が不要とはいっていない、ちょっと言葉が足りなかったのは認めますが
知性がなければ、そもそもプログラムを記述することすら出来ないでしょう?
文脈としては >>150 を応援している内容です

「根性論」の気配を感じて反感をもたれているのだろうとは推察しますけれども
181デフォルトの名無しさん (ワッチョイ 0580-rkYf)
垢版 |
2018/09/02(日) 20:12:17.71ID:Tb3tt8fk0
質問してるヤツ未満のとにかく程度の低いウンコが
この板で幅をきかせてるのが一番の問題
182デフォルトの名無しさん (ワッチョイ 65b3-J7KC)
垢版 |
2018/09/02(日) 20:30:49.80ID:fUkDgbHp0
質問者のほうが詳しいもんな。
2018/09/02(日) 20:32:00.95ID:ZRAAplmr0
暗にマウンティングしようとしすぎなんだよ、聞かれたことだけ答えてろ
2018/09/02(日) 20:40:57.55ID:x4is64QR0
>>167
いや、俺はゲームプログラムは作れるが
絵や音楽は無理だわ
185デフォルトの名無しさん (ワッチョイ 65b3-J7KC)
垢版 |
2018/09/02(日) 20:42:56.80ID:fUkDgbHp0
絵や音楽を作るAIをプログラミングすれば。
186デフォルトの名無しさん (ワッチョイ 65b3-J7KC)
垢版 |
2018/09/02(日) 22:53:04.36ID:fUkDgbHp0
gperfをconstexprで実現するライブラリない?
187デフォルトの名無しさん (ワッチョイ 65b3-J7KC)
垢版 |
2018/09/02(日) 22:54:40.74ID:fUkDgbHp0
>>153
数十人も集まったら臨界起こる。
危険。
2018/09/03(月) 14:05:29.69ID:oGMLPH120
>>170
ぷよぷよにしろテトリスにしろ完全に動くから売れるんだぞ
数年前に家庭用機に動きもっさりバグだらけのテトリスがあったが発売数日で誰もやってなかったよ
2018/09/03(月) 20:11:20.95ID:e/XZidXx0
数年て
30年近く前の話だろそれ…
2018/09/03(月) 20:23:04.08ID:JI8nhEFS0
何言ってんだこいつ・・・w
2018/09/03(月) 20:23:26.23ID:CjQwreEv0
無論コレですな
ttps://koty.wiki/Tetris
2018/09/03(月) 20:45:30.49ID:e/XZidXx0
てっきり任天堂のファミコンテトリスの話かと
2018/09/03(月) 20:54:01.67ID:oGMLPH120
xboxoneだぞ
194デフォルトの名無しさん (ワッチョイ 0580-rkYf)
垢版 |
2018/09/03(月) 20:57:10.35ID:E2St7m4+0
テトリスごときでcなんか不要
javascriptで十分

http://codepad.org/GePSyxwv ← コレでできあがり

このコードをメモ帳にコピペしてaho.htmlで保存
 ↓
aho.htmlダブルクリック
 ↓
テトリス起動
2018/09/04(火) 00:05:00.11ID:lJV/Mb/R0
以前の話
https://mevius.5ch.net/test/read.cgi/tech/1531558382/942,943

やりたいこと
https://mevius.5ch.net/test/read.cgi/tech/1524570314/713

質問
一つの bitset または vector<bool> に対して、異なるスレッドから集中してビットをオンしまくる、ということをして矛盾が発生することはありますか?
やりたいことはエラトステネスのふるいなので、この場合オンしたあとオフすることはありません
こういうことをして大丈夫かどうか調べてみたけれどもよくわかりません
bitset https://ideone.com/12V4WY
vector<bool> https://ideone.com/iVcLWd

付随しての質問
biset や vector<bool> というのは、一つの物理バイトに対して複数の bool を詰め込んだ作りとして実装されているのでしょうか?
この場合
bitset[index] = boolean,
とか
vector[index] = boolean
(operator[] が「bool の参照」?を返す、みたいな感じ) は実際にはどのように記述されているのでしょうか?
2018/09/04(火) 00:09:11.92ID:I66W1B5fd
See source by your IDE.
2018/09/04(火) 00:37:21.78ID:f5HJ/2BD0
>>195
> 異なるスレッドから集中してビットをオンしまくる、ということをして矛盾が発生することはありますか?

矛盾というのがどういう状況を想定しているのかわからないけど、
言語仕様上はデータ競合が起こりうると解釈できる場面だと思う。
要するに未定義動作に突入する可能性がある。

mutex でロックすることで簡単に回避は出来るが速度を考えるならば
操作するデータが atomic であるようにデザインするとなんとかなるかも?

> biset や vector<bool> というのは、一つの物理バイトに対して複数の bool を詰め込んだ作りとして実装されているのでしょうか?

される。

> bitset[index] = boolean,
> とか
> vector[index] = boolean
> (operator[] が「bool の参照」?を返す、みたいな感じ) は実際にはどのように記述されているのでしょうか?

「1 ビットを表す型」のオブジェクトを返すことで対応する。
そのせいで、 std::vector<bool> は bool 以外を格納する std::vector よりも出来ることに若干の制約がある。
2018/09/04(火) 03:10:23.32ID:f5HJ/2BD0
テトリスの素材を用意したぞ
https://dotup.org/uploda/dotup.org1633818.png
2018/09/04(火) 05:42:55.53ID:4a01gUXa0
惜しい、もうちょっと工夫すれば
「テトリス」だけでなく「○○トリス」としても使えるのに。
2018/09/04(火) 06:42:41.96ID:Nt/zN6W10
https://i.imgur.com/HPUz3hy.gif
むぅ…
2018/09/04(火) 07:24:16.79ID:FJBPHmlLM
>>195
アーキ依存だが、同一バイトアライメントを参照しない限り問題ないってエロい先輩が言ってた
大人しくmutexつかえ、mutexのコストよりスレッド切り替えのコストを気にしろ、とも言われた
2018/09/04(火) 09:34:15.28ID:W1MTXd47M
>>201
何のアライメントのことかわからないけど
キャッシュライン同じだとだめじゃないの
2018/09/04(火) 17:05:52.60ID:QK+jEBGl0
こういう待ち時間が僅少なものはスピンロックの方がいいぞ
2018/09/04(火) 18:06:05.25ID:W1MTXd47M
というよりこの場合CASが成功するまで繰り返せばいいだけ
2018/09/04(火) 18:43:17.89ID:QK+jEBGl0
bitset 位なら自分でcasで実装するのが最善か
206デフォルトの名無しさん (ワッチョイ eb9f-jo4B)
垢版 |
2018/09/04(火) 20:32:54.12ID:j0Ybv1km0
C++に標準で画像を表示する方法がないと聞いたけど
どんな方法で出来るのか教えてくれないか?
openGLとダイレクトX以外にないものなのか
2018/09/04(火) 20:35:12.07ID:I66W1B5fd
GDIならウィンドウに画像表示できるよ。
208デフォルトの名無しさん (ワッチョイ eb9f-jo4B)
垢版 |
2018/09/04(火) 20:40:18.08ID:j0Ybv1km0
そんなものがあるのか 調べてみるわ
2018/09/04(火) 20:44:23.36ID:I66W1B5fd
他にもgtkmmとかQtというのも、ウィンドウに画像表示できる。
210デフォルトの名無しさん (ワッチョイ eb9f-jo4B)
垢版 |
2018/09/04(火) 20:47:51.19ID:j0Ybv1km0
3つだけじゃないんだなw
ありがとうそっちのほうも調べてみるよ
2018/09/04(火) 21:01:31.49ID:lJV/Mb/R0
>>197 はちみつさん、>>201,203-205
コメントありがとうございます。

>>204,205
初めて atomic を使ってみました
https://ideone.com/HHUfCw

そのままでは atomic を vector の要素にはできないようで、stackoverflow 由来の変てこな回避策をとっています
https://stackoverflow.com/questions/13193484/how-to-declare-a-vector-of-atomic-in-c

マルチスレッドでの評価はこれからとりかかりますが、
こんな感じで CAS できてますでしょうか
2018/09/04(火) 21:44:16.54ID:rJd6gmxFM
なんとなくだけど、
vector<bool>でなくてよいのなら、複数スレッドからビットをonにしまくったところでそもそも問題にならないのでは?
2018/09/04(火) 22:20:34.19ID:gG5zqknwd
windowsでのパイプでのやり取りに詳しい人助けてくれませんか
あとで一部ソースコードは載せます

パイプ処理を非同期で行いたい

1. CreateNamedPipeで名前つきパイプを作成
2. CreateEventでオーパーラップ構造体にシグナル用のイベントをひもづける
3. 「非同期」でConnectNamedPipeを行う
4. WaitForSingleObjectでタイムアウトか接続が来たらパイプのコネクトをする

この流れで処理を作ろうとしてる
ただ、非同期な設定にすると上手く繋げず困ってます
そもそも名前つきパイプで非同期処理はできない..??

msdnにはCreateNamedPipeの第3引数にPIPE_WAITかPIPE_NOWAITかあるが、
PIPE_NOWAITは使用しないでくださいとあるのでPIPE_WAITを指定すると同期処理で待機することはできました
ただし、接続が来なかったらタイムアウトみたいなことができないので、ためしにPIPE_NOWAITにするとGetLastErrorによると218のエラーを返してくる
オーパーラップ構造体を指定したらConnectNamedPipeは非同期云々掛かれてるけどもできないのかな..?
2018/09/04(火) 22:34:45.20ID:Nt/zN6W10
どうやっても無理
2018/09/04(火) 22:41:49.50ID:GmxIRs0ad
dirty とか使わず単に

set

T e;
while (!_v[q]. _a.compare_exchange_weak(e, e|(1<<r)) {}

reset

T e;
while (!_v[q]. _a.compare_exchange_weak(e, e& ~(1<<r)) {}

じゃないのよく分からんけど
2018/09/04(火) 22:47:11.82ID:gG5zqknwd
>>214
それまじすか....
2018/09/04(火) 23:05:32.40ID:Nt/zN6W10
>>216
待たないでデータ読むにはPeekNamedPipeの第五引数cbAvailでサイズ判定してcbAvailが0以外ならデータ読んでも止まらない
これ以外の方法は何やってもダメ
Linuxみたいにすんなり行かんね
2018/09/04(火) 23:07:37.86ID:gG5zqknwd
>>217
そうなのか
今読めてるのは全部同期処理してるのか...

今からそのAPI調べてみる
読み込むのはそれでよかったとしてコネクトも同じ考え?
2018/09/04(火) 23:07:51.12ID:b2qgijeQr
sort に渡す比較関数って、たとえば
sort(A.begin(), A.end(), [](int a, int b){return a > b;});
としたら、降順になるのか昇順になるのかいつも分からなくなるんだが、どうやって覚えたら良いの

不等号の向き、つまり return で返る真偽とコンテナの要素番号の大小がどう対応してるのか分からない
2018/09/04(火) 23:59:12.10ID:IwUdbTOo0
a, bで順序がわからなくなるのなら、
first, secondとかleft, rightとかにすればいいんじゃね?
first < secondが昇順でなかったらクレーム続出だろ
2018/09/05(水) 00:07:00.10ID:p8WqhzKed
サーバー側だけどこんな感じです。
スマホで打つの限界がある...
{
HANDLE handle = CreateFileName(" \\\\.\\pipe\\"sample ,
PIPE_ACCESS_DUPLEX,
// ここの | って意味あるのかな?
// 両方とも0なので
PIPE_TYPE_BYTE |PIPE_READMODE_BYTE | PIPE_WAIT,
1,
0,
0,
0,
NULL );
OVERLAPED over = {0};
over.hEvent = CreateEvent(NULL, TRUE, FALSE, "sampleEvent");

BOOL result =ConnectNamedPipe(handle, &over);
DWORD error = GetLastError();
if( ( 0 == result) &&
( ( ERROR_SUCCESS == error ) || ( ERROR_PPE_CNNECTED != error ) || ( ERROR_IO_PENDING != error ) )
{
WaitForSingleObject(); //本当はここで待ってほしいが、ConnectNamedPipeで止まる
}
}
2018/09/05(水) 00:13:10.80ID:9rSvLDak0
>>213
何がいいたいのかよく分からんな。
4のwaitforでタイムアウトか接続されたか分かるよね?
普通に問題なく動くよ。
2018/09/05(水) 00:18:10.89ID:VENvGGw0d
>>222
理想の流れは1-4の流れにしたかった

ただ実際は非同期処理が上手くできておらず3のConnectNamedPipeで捕まる
クライアント側が居なかった場合ずっと待機し続けることになる
そうなっているのが現状

ソースは思い出してかいたのが>>221
224デフォルトの名無しさん (ワッチョイ 0580-rkYf)
垢版 |
2018/09/05(水) 00:30:09.32ID:+wARDt+J0
ココにサンプルコードがある
http://eternalwindows.jp/ipc/namedpipe/namedpipe02.html

FILE_FLAG_OVERLAPPED を追加する
よく分からんがコレとはまた違うのか
2018/09/05(水) 00:37:34.35ID:ABz0W8sZd
>>224
FILE_FLAG_OVERLAPPEDの使用はまだ試してないので明日試してみますありがとう
FILE_FLAG_OVERLAPPEDに関しては持たないときの条件を使ってたんだけどだめだったんかな...

これをしたかったのだが...
https://msdn.microsoft.com/ja-jp/library/cc429611.aspx
hNamedPipe ハンドルが FILE_FLAG_OVERLAPPED フラグを持たないとき、かつ、lpOverlapped パラメータで有効なポインタを指定したときは、この関数は非同期的に実行されます。
制御はすぐに返り、戻り値は 0 になります。GetLastError 関数は、ConnectNamedPipe 関数を呼び出す前にクライアントプロセス側が接続されていたときは
ERROR_PIPE_CONNECTED を、そうでないときは ERROR_IO_PENDING を返します。


peekNamedPipe読んでるけど難しい
2018/09/05(水) 01:24:39.22ID:BafBBEgt0
peekで調べるのはcbAvailだけ
データは読まなくていい
読むときはReadFile
2018/09/05(水) 02:51:54.52ID:n3z3O06I0
C++関係無いよね
Win32APIスレに行くべきだと思う

https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa365146(v=vs.85).aspx
こっちにはその部分に相当する箇所が無いようにみえる

FLAG_OVERLAPPEDの有無で非同期/同期は決まるんじゃないのかなぁ
>If hNamedPipe was not opened with FILE_FLAG_OVERLAPPED, the function does not return until a client is connected or an error occurs.
ってあるし
2018/09/05(水) 12:47:17.08ID:TWmx8fnR0
>>223
>クライアント側が居なかった場合、ずっと待機し続ける

パイプって、パイプラインにデータが流れてくるまでは、ブロックされるものだろ。
データも流れて来ないのに、先へ進んだら、バグるだけ

その際、非同期なら、データ無しで、即座に返答が返ってくるのでは?
2018/09/05(水) 13:15:20.01ID:mkiFi/5o0
入力が「まだ来んからちょ待っとれ」なのか
「来るわけないやろアホかおまえ」なのかは
別の手段で判断せにゃならん
2018/09/05(水) 15:48:09.73ID:QNa0Ltxl0
まあ常識的には適当な時間でタイムアウトするようにするくらいのものかな。
2018/09/05(水) 16:08:15.65ID:Nag0NR3Rd
>>221
https://stackoverflow.com/questions/14306499/non-blocking-connectnamedpipe-event-not-getting-signaled/14306743

PIPE_NOWAIT を使えば ERROR_PIPE_LISTENING だの ERROR_IO_PENDING が即座に返されるが
WaitForSingleObject は発火しない

PIPE_WAIT だと当然ブロックする
PIPE_NOWAIT はlan managerとの互換性のために残されているだけで使用は推奨されていない

面倒でも FILE_FLAG_OVERLAPPED を使うしかない
2018/09/05(水) 16:09:55.39ID:Nag0NR3Rd
と書いたけどカッコつけずに後先考えず PIPE_NOWAIT でポーリングしてもいいか
2018/09/05(水) 18:53:58.76ID:H6UyuApwM
void hoge(int x, int *returnint){
returnint = int * 2;
}
int hoge(int x){
return int * 2;
}

これって内容同じですか?
2018/09/05(水) 19:15:02.29ID:BafBBEgt0
どっちもコンパイルエラー出る点では同じ
2018/09/05(水) 19:32:27.66ID:YeNc+rPy0
>>233 C言語に対して重大な勘違い、または質問レスに些細な打ち間違い、
どちらかだと思うが、どちらかは分からない。
2018/09/05(水) 19:33:03.57ID:YeNc+rPy0
C言語じゃなくてC++だね、ここ。
2018/09/05(水) 22:59:59.06ID:yXdlNP4XM
selectしろや
2018/09/05(水) 23:22:24.89ID:juRrGCxW0
>>215
内容をみてくださり感謝いたします、とても考えさせられました

まず >>211 に二点誤りがありました
・コンストラクタ引数に与える bit 数から、内部 vector<atomic<int>> の確保容量を計算する方法に誤りがあった
・CAS 後にスピンロックするかどうかの判断にあやまりがあった

修正 https://ideone.com/nwcmzq

>>215
>while (!_v[q]. _a.compare_exchange_weak(e, e|(1<<r)) {}
>while (!_v[q]. _a.compare_exchange_weak(e, e& ~(1<<r)) {}
>(e は未初期化状態でも構わない)

>>195 「やりたいことはエラトステネスのふるいなので、この場合オンしたあとオフすることはありません」
に範囲を限定するのならば >>215 はうまくいくと思います。これには「なるほど!!」と思いました。

ビットセットの最中は別スレッドのビットリセットやビットテストをスピンロックさせたい、
とかの排他制御をやるのならば、dirty-bit(というか1ビットセマフォ)を作らないといけないと考えています
2018/09/06(木) 02:04:16.57ID:Gt7E2PT1M
>>234,235
すみません
C++にあまり詳しくないのでわからないのですが、どこがおかしいのでしょうか?
これなら内容等しいですか?

void hoge(int x, int& ret){
ret = int * 2;
}

int hoge(int x){
return int * 2:
}
2018/09/06(木) 02:08:35.51ID:itCyrIVk0
それはギャグで言っているのか?

void hoge(int x, int& ret){
ret = x * 2;
}

int hoge(int x){
return x * 2:
}
2018/09/06(木) 02:15:35.03ID:Ev1vpWJGM
>>240
すみません素でボケてました…
それなら同一ですか?
returnする場合と参照渡しする場合の違い(速度など)があるのか知りたかったです
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況