[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/21 03:04 / Filesize : 243 KB / Number-of Response : 977
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

マルチスレッドプログラミング相談室 その8



1 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 17:19:27 ]
マルチスレッドプログラミングについて語るスレ

■前スレ
マルチスレッドプログラミング相談室 その7
pc12.2ch.net/test/read.cgi/tech/1215253576/

■過去スレ
その1 ttp://pc3.2ch.net/tech/kako/997/997345868.html
その2 ttp://pc5.2ch.net/test/read.cgi/tech/1037636153/
その3 ttp://pc8.2ch.net/test/read.cgi/tech/1098268137/
その4 ttp://pc8.2ch.net/test/read.cgi/tech/1130984585/
その5 ttp://pc11.2ch.net/test/read.cgi/tech/1157814833/
その6 ttp://pc11.2ch.net/test/read.cgi/tech/1187008532/

OS・言語・環境は問わないが、それゆえ明記すべし。
テンプレ
【OS】
【言語】
【実行環境】
【その他特記する事項】

409 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:15:55 ]
「並列処理は〜」と一般化された題材に対して、帰納法で証明しようとしているのが問題かな
「マルチスレッドに向かないアルゴリズムがある」というテーマならこの方法で十分だけど

410 名前:デフォルトの名無しさん [2010/07/04(日) 00:08:29 ]
むしろ、そうじゃない人を見たら驚く。ライターなんてゲームの販売と同じ。
品物を売るまで、記事を読ませるまでが勝負。その後や内容なんて気にしなくてよい。

411 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:24:14 ]
ライターじゃないだろ

412 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:39:12 ]
金とってんのか

413 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:39:57 ]
ひとをみたらライターと思え

414 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 17:20:36 ]
ゲームの販売と同じなら、クソゲー売り続けるのと名作売り続けるのじゃ全く末路が
違うことくらい分かるだろうにアホか

415 名前: ◆0uxK91AxII mailto:sage [2010/07/04(日) 20:15:36 ]
>>401
記事を書いている本人が明らかに知識不足で、可笑しい。
テキトーに眺めただけで、コイツはダメだって分かるレベル。

416 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 20:54:04 ]
並列化したプログラムの例として、アトミックな足し算使った合計計算のコードを出すような人だからな。
何がしたいのかさっぱりわからんレベル。
ほんとにまともなマルチスレッドのプログラム書いたことあるんかと。


417 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 21:44:51 ]
>アトミックな足し算使った合計計算

とりあえずPageRankみたいな巨大行列計算だと使うんじゃないかな。
並列化というより分散化したいレベルだけど。



418 名前:デフォルトの名無しさん [2010/07/04(日) 22:58:48 ]
まともに組んだことがない人の記事だな

419 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 20:30:55 ]
まあそこまで批判するべきことじゃない
わからないから試すのであって、わかるならする必要はない
まあ公開するならそれなりに検証して見栄を張るべきだとは思うけどねw素直すぎる

420 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 21:43:17 ]
MTでパフォーマンス出すには、理屈を理解する頭が無いとどうしようもない気はする

421 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 22:06:11 ]
分からないから試す、にも二通りある
「何が分からないかを分かった上で試す」のか
「何が分からないかも分からないまま試す」のか

まぁ>>401に関しては、ほんとにチラ見しただけでバカ記事っつーか、むしろ真面目に
叩いて貰えてるだけ幸せなんじゃね?
いやマジで、俺ならこんなのに関わる気にもならんわ。
どうせバカ記事書いた本人は「めんどくせぇのに絡まれたわ」程度にしか思わねーんだろ
と思うとなぁ。

422 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 22:20:05 ]
>>419
この人の並列処理関連のいろいろなブログ記事とかCodeZineの記事ね、
元々ほかの人の並列処理関連の記事の批判から始まってるんだよね。

ばかなこと書いてるやつがいるので俺が訂正してやるって、
ほんとにこういう感じなのね。
で、あの記事なんだわ。


423 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 22:23:21 ]
>>421
なぜ?氏の指摘はやっぱりおおよそ的を射てる内容なのかな?


424 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 22:27:57 ]
つうか着々と増え続けとる…


425 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 19:33:04 ]
へえ

426 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 20:01:42 ]
ほぉ

427 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 22:49:02 ]
>まともに組んだことがない人の記事だな
ttp://blogs.wankuma.com/jitta/archive/2009/10/21/182308.aspx

まともに組んだことはあまりないようだなw




428 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 23:20:11 ]
なぜ?
Posted @ 2010/07/07 22:46
>スレッドの終了を、もうちょっとスマートに待てないのかなぁ?まぁ、動いてるからいいや。

全然よくありません。
Sleep(0)を入れているとはいえ、無駄なループでCPUを使用していては、まともな計測はできません。
コア数以上にスレッド数を増やしても改善していってしまうのは、これも原因なのではないですか?

>おかしいと思ったらできるところまで追求する。それが職人ってもんじゃないですかねー。似非職人はヤーネー。

いくらなんでもこんなこと言いながらこれではダメでしょう。

429 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 23:44:31 ]
本人に言えよ

430 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 23:57:00 ]
おまえならできる

431 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:19:44 ]



432 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:24:16 ]
本人?

433 名前:デフォルトの名無しさん [2010/07/08(木) 01:19:38 ]
馬鹿が呟いているだけだから無視でいいだろ。話題にすらならん。

434 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 01:42:21 ]
ヲチスレじゃないしな
もう少しマシな話題ならともかく、内容がどうでもよさすぎる

435 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 01:58:28 ]
最近話題がない


436 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 02:29:13 ]
くだらないネタで流れるなら止まってた方がずっといい

437 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 11:00:47 ]
マルチスレッドと関係ないかもしれないけど、
CPUって忙しくないときどんな状態になってるんですか?
割り込み待ち状態なんですか?
それともなんらかの無限ループ状態なんですか?



438 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 12:15:51 ]
忙しくなさ次第でいろいろ

439 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 21:49:46 ]
>>437
ちょっと暇なときは、いっしょうけんめいだらだらしてる。
だいぶ暇なときは、夢の国へいく。

440 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 21:49:51 ]
>>438
アイドリング状態

441 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 22:03:35 ]
img.20ch.net/idol/s/idol20ch21832.jpg

442 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 23:35:26 ]
SUZUKAサーキット
www.youtube.com/watch?v=FTxgrkmX2SA

443 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 06:31:23 ]
>>440
それじゃ何の説明にもなってない
つーか環境次第で千差万別だから、本気でそういう情報が必要なら仕様書を当たるといい
単に何となく興味があって聞いてみた程度なら、めんどくさいから知らなくていい

仮にx86なら、暇になったらHLTかPAUSEを仕込んでおくことが多いだろうけど、そうで
ないのもあるし、単純にHLT発行すればいいって話でもないし、そもそもぶっちゃけた話、
全く知らない奴に頭っから全部説明してらんね
halt状態の休み方も何段階もある訳だし

444 名前:デフォルトの名無しさん mailto:sage [2010/08/12(木) 12:18:23 ]
>ちょっと暇なときは、いっしょうけんめいだらだらしてる。
スピンロックか

445 名前:350 mailto:sage [2010/08/17(火) 20:53:09 ]
「マルチスレッド」の説明する時に「マルチタスク」の状態遷移持ち出す奴がいて、俺的には「?」なんですが、そういうのありなんですか?

446 名前:デフォルトの名無しさん mailto:sage [2010/08/17(火) 21:25:38 ]
プロセス空間が分かれていない頃の書籍でマルチタスク学んだ人なら普通じゃね?

447 名前:デフォルトの名無しさん mailto:sage [2010/08/17(火) 21:34:57 ]
>>445
大して難しい話じゃ無いし、基本だから知っておくべきだろう。



448 名前:デフォルトの名無しさん mailto:sage [2010/08/17(火) 22:30:37 ]
リアルタイムOSの「タスク」は、Unixのスレッドのようなものだったりするぞ。

449 名前:デフォルトの名無しさん mailto:sage [2010/08/21(土) 13:56:10 ]
>「マルチタスク」の状態遷移
て何ぞね
DORMANT/WAITING/RUNNINGとか言った類類の話ならタスク単体の状態だし
タスク同士の関係は非同期というのがマルチタスクの本性であるからして、
複数タスクに渡る状態など一般には規定しようがない

設計者がタスクそれぞれに明示的に同期ロジックをプログラムしたという想定で、
その詳細が明かにされた上でなら話は別だが

450 名前:デフォルトの名無しさん mailto:sage [2010/08/29(日) 12:59:13 ]
まあ、>>445は理解できなかったって言ってるんだから説明も出来ないだろう

451 名前:デフォルトの名無しさん [2010/10/01(金) 17:29:29 ]
あんまり理解できてないのでうんこみたいな質問申し訳ないんだけど、
スレッドが二つ(A,B)あって、
変数 int a にスレッドAがひたすら数字を入れて、スレッドBはひたすらその数字を読むだけの場合、
int aの書き込み・読み込み時にクリティカルセクション使う必要はある?
手元で試してみたら片方が読み込みオンリーの場合正常に動いたんよね

452 名前:デフォルトの名無しさん mailto:sage [2010/10/01(金) 18:10:07 ]
移植性のあるコードを書こうと思ったら必要なる。
ただハードやOS・言語・コンパイラ・ライブラリなどが想定するメモリモデル
(平たく言えばマルチスレッドでメモリがどう見えるかのルール)によっては
それで正しいケースもある。
具体的な回答が欲しいならpthread、Win32のスレッド、Javaや.NETくらいの
くくりで質問するといいよ。

453 名前:デフォルトの名無しさん mailto:sage [2010/10/01(金) 18:34:06 ]
>>451
まず、書き込まれた値が化けたりせず正常に読めるか、という点については
適切にアラインされている、CPUのワードサイズ以下の値なら、まず問題ない。
Cコンパイラにおいて、「int」として扱われる値を
Cコンパイラに配置させる場合は、まず大丈夫。

ただし、スレッドAが書き換えた後にスレッドBが読み出したとき
直前の変更が適切に反映されているかどうか、については
環境依存、というか普通は保証されない。

454 名前:デフォルトの名無しさん mailto:sage [2010/10/01(金) 18:41:34 ]
一方通行なら問題ないでしょ

455 名前:デフォルトの名無しさん mailto:sage [2010/10/01(金) 18:44:58 ]
他に受け渡すデータが一切どこにも何もなくて、ただその数字1個を渡せばいいだけなら

456 名前:デフォルトの名無しさん mailto:sage [2010/10/01(金) 18:49:48 ]
ハード依存OKということならシングルCPUのPCは
スレッドに関するほとんどの問題発生しないし正常に動くね。

457 名前:デフォルトの名無しさん mailto:sage [2010/10/01(金) 18:55:25 ]
読み出しで値を比較するときはちょっと考えないといけないかも



458 名前:デフォルトの名無しさん mailto:sage [2010/10/01(金) 18:57:15 ]
>>456
いくらなんでも、理解して無さすぎ

459 名前:デフォルトの名無しさん mailto:sage [2010/10/01(金) 18:57:30 ]
>>452
すまん、VC++で、Win32APIのCreateThread使った話だった

>>453
thx 直前の変更は特に気にしなくてもよさそう

取り扱う変数がvectorとかlistになってくるとまた違うんかな……

460 名前:デフォルトの名無しさん mailto:sage [2010/10/01(金) 22:14:34 ]
ひたすらスレッドAが書き込んでスレッドBが読み出してprintfするだけなら正しく見えるが、
例えば、イベントを受け取ってスレッドAが書き込もうとして、スレッドBは読み出すとき、
読み出された値はスレッドAが書き込こむ前か後かはCPUの気まぐれになりそうな気がする。
まぁそんな時はロックしなくてもスレッドAが書き込み終わったらスレッドBに読み込むように言えばいいけど

461 名前:デフォルトの名無しさん mailto:sage [2010/10/01(金) 22:32:14 ]
Win32での32bit読み書きはアトミックな操作だっけ?

462 名前:デフォルトの名無しさん mailto:sage [2010/10/01(金) 22:38:21 ]
Windowsならここ読んどきゃいいよ
msdn.microsoft.com/ja-jp/library/bb310595(VS.85).aspx
msdn.microsoft.com/en-us/library/ee418650(VS.85).aspx

463 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 04:07:15 ]
>>461
Win32の環境じゃなくIA32とかx64の意味でじゃないの?


464 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 10:36:20 ]
i386SXのように外部データバスが16bitのものはどうなるんだろ。
i386SXでマルチプロセッサ構成は見たことがないけどね。

465 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 10:56:16 ]
たぶん、データが化ける可能性があると思う。
386SX以外にも、68000とか8088とかがその系統だったと思うし
今後も組み込み向けとかにそういうのが出てこないとは言い切れない。

だから、「intなら大丈夫」じゃなくて「intなら普通は大丈夫」程度。

とはいえ、組み込み向けのバス幅制限があるような環境では
マルチスレッドはともかく、
マルチプロセッサ/マルチコアはまずありえないと考えて良いんじゃないかな。

466 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 11:02:40 ]
そもそも、lock prefix使えないはずなので、マルチプロセッサが構成出来ない。

467 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 11:03:07 ]
386SXの32ビットR/Wや8088の16ビットR/Wは、読み書きは複数サイクルかもしれないけど、
完了するまで割込まれないんじゃなかった? 仕様書見て言ってるわけじゃないけど。

同じような構成で割込まれるプロセッサもあるかもしれないけど。



468 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 11:50:37 ]
32bitのアクセスがアトミックであると保証されてるのはi486以降とIntelの資料に書いてある

469 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 12:09:53 ]
>>467
割り込みは確かに発生しないから単一コアのスレッドなら問題はないが、
マルチコア・CPUの場合は問題が発生する。


470 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 12:18:00 ]
んでi386SXのマルチプロセッサやマルチコアは実在するの?

471 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 12:46:22 ]
SXかどうかはわからないが386のマルチプロセッサはあったらしい。
ja.wikipedia.org/wiki/%E3%82%B7%E3%83%BC%E3%82%AF%E3%82%A8%E3%83%B3%E3%83%88%E3%83%BB%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF

プロセッサレベルの割込みじゃなくて、バスの読み書きがどうかということだと思うんだけど。

472 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 12:55:16 ]
>>471
それはi386DXだな

473 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 14:15:52 ]
ハードのことわからんのに憶測で書くなよ

474 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 15:18:15 ]
>>468
i386まではDMA操作なら割り込めた、CPU単体でならアトミックだったがSXでマルチプロセッサ組んだらダメだろうと思う


475 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 15:22:14 ]
小数点付きのプログラムカウンタのあるCPUでも使ってるんかね

476 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 22:16:44 ]
>>475
パイプラインの途中を指し示したいみたいな?

477 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 23:05:16 ]
たぶん475は、全ての命令が1クロックで実行できると思ってる。



478 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 23:52:07 ]
intelのは1クロックで動くんじゃないの

479 名前:デフォルトの名無しさん mailto:sage [2010/10/02(土) 23:58:09 ]
ワイヤードロジックをほぼ全体に使うようになったのは486から

480 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 00:08:11 ]
>>467
割り込みと、トランザクションをごっちゃにしてる?
CPUの割り込みはR/Wの間に中断しないだけ。
マルチプロセッサについてはRとWが別のトランザクションなんでR/Wの間に別のプロセッサのRやWが割り込める。
この割り込みを防ぐ信号を駆動するのがインターロック命令

481 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 01:17:48 ]
ttp://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html

482 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 11:49:42 ]
読む側が、変更されない変数読んでると思われて最適化されちゃうとか無いの?
volatile付けなくても大丈夫?

483 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 13:45:17 ]
>>482
スレッド間で共有する変数はvolatileつけておくべきだよ。

484 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 14:19:19 ]
>>483
そんないいかげんな知識で大丈夫か?

485 名前:デフォルトの名無しさん [2010/10/03(日) 14:31:25 ]
馬鹿は黙れ。CPUの基本構造も知らずにプログラム組むとか笑えない。

486 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 14:33:44 ]
>>484
完璧な解説ヨロ

487 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 14:50:17 ]
ここ読んどけ
d.hatena.ne.jp/bsdhouse/



488 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 14:58:02 ]
>>465
> とはいえ、組み込み向けのバス幅制限があるような環境では
> マルチスレッドはともかく、
> マルチプロセッサ/マルチコアはまずありえないと考えて良いんじゃないかな。

組込み マルチコア でググレばわかるように、もはや組み込みでもマルチ
コアはありえないと言える状況ではないよ。

489 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 15:10:07 ]
8088やi386SXみたいな内部と外部でバス幅が違うような
石を使わざるを得ない(特殊な?)状況限定の話にそんなレスされても。

490 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 16:00:49 ]
内部と外部でバス幅が違うなんて組み込みだと今時珍しくないが
もしかしてそんなことも知らんのか?

491 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 16:58:51 ]
ハードの事わかって書いてるわけじゃないでしょ
最適化されたときのコードの矛盾とかをハードの問題みたいに思ってるのかも

492 名前:デフォルトの名無しさん [2010/10/03(日) 19:47:54 ]
【OS】 Linux,W2K
【言語】 C
【実行環境】Cygwin(W2Kの場合)
【その他特記する事項】 以下の行列演算は高速化できるのでしょうか。
スレッドの意味も作り方もわかりません。
for(j=0;j<16;j++){
for(i=0;i<16;i++){
d1[j]^=GF[e1[j][i]];
d2[j]^=GF[e2[j][i]];
}
}

493 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 20:23:30 ]
>>492
それCでコンパイルできた?

494 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 20:29:53 ]
>>488>>490
「バス幅が違うような環境でマルチコアなんかないだろ?」と
>>465には書かれているように見えるが
おまえ、日本語は苦手か?

両方を満たしたものがめずらしくもないものなら
そう反論しろよ。別個にではなく。

495 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 20:30:43 ]
>>492
またお前か

496 名前:494 mailto:sage [2010/10/03(日) 20:38:18 ]
ちょっと書き方を変える。

>>488
「組み込みにマルチコアはありえない」などとは、どこにも書かれてない。
偉そうにしてるが、幻覚でも見たのか?

>>490
「内部と外部でバス幅が違う環境などない」などとは、誰も言ってない。
偉そうにしてるが、電波でも受け取ったか?


「内部と外部でバス幅が違うような用途でも、マルチコアが採用されつつある」
と言いたいのなら、ちゃんとそう書け。

497 名前:デフォルトの名無しさん mailto:sage [2010/10/03(日) 22:28:11 ]
> 「組み込みにマルチコアはありえない」などとは、どこにも書かれてない。
⇒ 「マルチプロセッサ/マルチコアはまずありえない」と書いてますが?

>「内部と外部でバス幅が違う環境などない」などとは、誰も言ってない。
誰もそんなことは言ってないし、誰もそれに反論なんてしてない。
むしろ、最近は珍しくないと書いてあるんだが。

偉そうにしてるが、一体誰と戦ってるんだ? (w



498 名前: ◆0uxK91AxII mailto:sage [2010/10/04(月) 23:01:18 ]
>>484
大丈夫だ、問題無い。

499 名前:デフォルトの名無しさん mailto:sage [2010/10/05(火) 22:30:40 ]
>>498
インテルは言っている、素直にインテル・スレッディング・ビルディングブロックを使えと

500 名前:デフォルトの名無しさん mailto:sage [2010/10/06(水) 01:31:55 ]
インテルは言っている、インテルはいっている

501 名前:デフォルトの名無しさん mailto:sage [2010/10/06(水) 09:05:27 ]
エルシャダイスレはここですか?

502 名前:デフォルトの名無しさん mailto:sage [2010/10/06(水) 19:27:08 ]
だめええ!入れないでえええ!インテルいれちゃだめええええええええ!!あ?

503 名前:デフォルトの名無しさん mailto:sage [2010/10/06(水) 21:54:44 ]
インテルは逝ってる

504 名前:デフォルトの名無しさん mailto:sage [2010/10/10(日) 11:00:31 ]
スタベーションを回避する方法を教えてください。

505 名前:デフォルトの名無しさん mailto:sage [2010/10/12(火) 15:22:11 ]
待ち行列の先頭にいるスレッド以外は偶然入れても待ち行列の最後に並んで前の人が終わるまで待つとか

506 名前:デフォルトの名無しさん mailto:sage [2010/10/12(火) 20:17:24 ]
>>504
A,B,Cというセマフォを取得するときどのスレッドもA,B,Cの順でセマフォを取得する。

507 名前:デフォルトの名無しさん [2010/10/13(水) 01:49:19 ]
【OS】WindowsXP
【言語】C++,Win32
【実行環境】VisualStudio2005

かなり基本的な質問です。
スレッドを外部から終了させたい場合、どのようにすればいいのでしょうか?
あるスレッドを常に動かしていて、ユーザーがGUIプログラムを閉じた場合に、メインスレッド側からどのように命令すればいいのかわかりません。
ttp://msdn.microsoft.com/ja-jp/library/kdzttdcb%28VS.80%29.aspx
↑のようなページやググって調べると、スレッド関数側が自発的に_endthreadex関数などで終了する例はあるのですが、
終了するタイミングをスレッド関数側が知らない場合についてはあまり書かれていません。
よろしくお願いします。



508 名前:デフォルトの名無しさん mailto:sage [2010/10/13(水) 02:06:21 ]
終了するタイミングをスレッド関数側に教える仕組みがいくつかある

509 名前:デフォルトの名無しさん mailto:sage [2010/10/13(水) 06:37:16 ]
>>507
何とかしてサブスレッドに終了を伝える方法を自分で実装する。特に関数はない。
Windowsならvolatile boolかCreateEvent+SetEventでいいだろう。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<243KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef