[表示 : 全て 最新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】
【言語】
【実行環境】
【その他特記する事項】

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でいいだろう。

510 名前:デフォルトの名無しさん mailto:sage [2010/10/14(木) 04:23:26 ]
いいか、お前らTerminateThreadは使うなよ!使うな!絶対に使うなよ!

511 名前:デフォルトの名無しさん mailto:sage [2010/10/14(木) 07:47:26 ]
kill -KILLですね、わかります。

512 名前:デフォルトの名無しさん mailto:sage [2010/10/14(木) 22:51:22 ]
TerminateThread = ハングしろ に近いからねぇ
.Netとかだとそもそも抹消されてるが。Suspendも割と個人的に怖いな

513 名前:デフォルトの名無しさん mailto:sage [2010/10/14(木) 22:52:08 ]
TerminateThreadに頼ったプログラムは死んでいいけど、
バグがあってサブスレッドが応答しなくなった時の万が一のためにTerminateThreadするのは
いーんでないの

514 名前:デフォルトの名無しさん mailto:sage [2010/10/14(木) 23:08:49 ]
つーかスレッドの終了待ちでWaitFor*Objectしてタイムアウトしたら
TerminateThreadってのは普通だろ

515 名前:デフォルトの名無しさん mailto:sage [2010/10/14(木) 23:23:24 ]
そりはバグなので速やかにアプリケーションを終了すべきでは?
少なくとも普通じゃない。



516 名前:デフォルトの名無しさん mailto:sage [2010/10/14(木) 23:43:40 ]
>>510
別に使っても問題ないよ。
DllMainのデタッチスレッドさえちゃんと実装されていれば何も問題はない。


517 名前:デフォルトの名無しさん mailto:sage [2010/10/14(木) 23:58:39 ]
Vistaより前がターゲットに入るなら「何も問題ない」は無いわ
DllMainがどう頑張ろうと関係無い

518 名前:デフォルトの名無しさん mailto:sage [2010/10/15(金) 00:15:38 ]
>>516
DllMainはコールバックされないってちゃんと書いてあるのにどういうコードを書くつもりなのか聞きたい

519 名前: ◆0uxK91AxII mailto:sage [2010/10/15(金) 04:13:54 ]
TerminateThreadするくらいならExitProcessで止めを刺す。

520 名前:デフォルトの名無しさん mailto:sage [2010/10/15(金) 04:18:38 ]
TerminateThreadなんて使う必要性あるの?

521 名前:デフォルトの名無しさん mailto:sage [2010/10/15(金) 06:53:29 ]
サブスレッドの確保したメモリとかソケットとかDB接続とかその他もろもろのハンドル
はどうするつもりだよ。
あとミューテックスをロックしたまま暴走した場合とか開放されるんだっけ?
問題ありすぎ

522 名前:デフォルトの名無しさん mailto:sage [2010/10/15(金) 23:13:04 ]
>>514
ないない

523 名前:デフォルトの名無しさん mailto:sage [2010/10/15(金) 23:13:49 ]
>>519
そのほうがごみが残らなくていいな

524 名前:デフォルトの名無しさん mailto:sega [2010/12/19(日) 17:17:41 ]
printfはどういうレベルでスレッドセーフじゃないんでしょうか

525 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 17:19:00 ]
間違えた、sprintfです



526 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 17:22:56 ]
書込み先のことかな?

527 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 17:24:15 ]
処理系によるんじゃないでしょうか

528 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 17:30:04 ]
MT-Safe ってどういう意味?

529 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 17:30:49 ]
複数のスレッドで安全という意味

530 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 17:32:51 ]
>>527
POSIXというか、ぶっちゃけLinuxの標準ライブラリstdioでならどうでしょうか。
ここまで範囲限定したらスレチになんのかな?

531 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 17:35:10 ]
POSIXのstdioで _unlocked が付いてないものはスレッドセーフです

532 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 19:46:28 ]
つまりprintfはスレッドセーフってことか。ありがとう!

533 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 21:15:28 ]
関数がってことで、使い方間違えると...

534 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 23:13:56 ]
まぁ想像するだけでもprintfは外部に出力するからロックとか色々してるのは分かる
printfしたらバグが起こらなくなったとかで原因がスレッド絡みとかよくある

んでprintfで起こらなくなるから放置とかマジ勘弁してくださいorz

535 名前:デフォルトの名無しさん mailto:sage [2010/12/24(金) 00:47:37 ]
スレッドセーフなメモリの読み書きについて勉強しているのですが、情報が少なく捗りません。
メモリへの同時アクセスによるデータ破壊は、書き込み時にのみ起こると認識しているのですが、正しいでしょうか?

・二つのスレッドが一つの変数を書き換えるとき
 →データが破壊される場合がある。
 
・一つのスレッドが一つの変数を書き換え、別のスレッドがその変数を読み込むとき
 →書き込みは問題なく行われる。
 →読み込みは、書き換え途中のデータを読み込む場合がある。

・二つのスレッドが一つの変数を読み込むとき
 →問題なし。



536 名前:デフォルトの名無しさん mailto:sage [2010/12/24(金) 01:06:26 ]
書き込まないものを読み込むことにどんな意味があるのだろうか

537 名前:デフォルトの名無しさん mailto:sage [2010/12/24(金) 01:10:53 ]
const 定数ですね

538 名前:デフォルトの名無しさん mailto:sage [2010/12/24(金) 01:43:18 ]
>>535
いずれも正しい。

539 名前:デフォルトの名無しさん mailto:sage [2010/12/24(金) 06:02:20 ]
ありがとうございます。理解が深まりました。

540 名前:デフォルトの名無しさん mailto:sage [2010/12/24(金) 09:17:21 ]
>>535
> ・二つのスレッドが一つの変数を書き換えるとき
>  →データが破壊される場合がある。

データの破壊とは何ぞや?単に後から書いたデータが残る。それだけの話。

541 名前:デフォルトの名無しさん mailto:sage [2010/12/24(金) 09:53:16 ]
それぞれの書き込みがアトミックならね。

32ビットマシンで64ビットの書き込みとか、アトミックでない場合、破壊が起こるかもしれない。

542 名前:デフォルトの名無しさん mailto:sage [2010/12/24(金) 15:07:31 ]
>>540
配列だって、立派な配列変数だぜ。
文字列型変数もあるしな。

543 名前:540 mailto:sage [2010/12/24(金) 15:52:35 ]
そうだった、最近のデータはでかいんだな。
組み込み系のスレ見た後だったから頭がアセンブラレベルになってた。
失礼。

俺はどっちにしてもミューテックスかクリティカルセクションで排他しておくけど。

544 名前:デフォルトの名無しさん mailto:sage [2010/12/24(金) 17:17:54 ]
同時アクセス時の挙動なんてCPUの仕様次第だろ
同時読込なら安全なんて確証は無い

545 名前:デフォルトの名無しさん [2010/12/24(金) 17:20:04 ]
データが小さければ読み書きのキャッシュ問題とか無視できるが、
今はふつうに扱う標準データが大きいからなあ。プログラミングも大変だ。



546 名前:デフォルトの名無しさん mailto:sage [2010/12/24(金) 17:20:27 ]
アホ発見

547 名前:デフォルトの名無しさん mailto:sage [2010/12/24(金) 17:30:42 ]
同時読込なら安全なんて確証は無い・・・
ということは同じ関数を同時に実行するとまずい場合があるってことか
同じ関数を同時に実行すると同じ命令列を同時に読込むことになるもんな

548 名前:デフォルトの名無しさん mailto:sage [2010/12/25(土) 20:23:56 ]
言語仕様じゃなくハードウェア仕様だと理解してればいい
大丈夫かどうかを言語仕様で調べても守備範囲外のことで規定されてないから無駄

549 名前:デフォルトの名無しさん mailto:sage [2010/12/25(土) 20:28:39 ]
いや失礼、言語仕様で規定されてる物もあるか

550 名前:デフォルトの名無しさん [2010/12/26(日) 16:17:56 ]
printfがスレッドセーフじゃないのはわかるけど
どうしてsprintfがスレッドセーフではないのはなぜ?

551 名前:デフォルトの名無しさん mailto:sage [2010/12/26(日) 16:24:32 ]
>>550
内部にスタテックバッファーを持ってるかも。

552 名前:デフォルトの名無しさん mailto:sage [2010/12/26(日) 16:54:42 ]
>>551
まじか・・・だらしのないやつだなsprintfも・・・

553 名前:デフォルトの名無しさん mailto:sage [2010/12/26(日) 17:45:40 ]
おまえが使ってるライブラリを実装したところに聞けよ

554 名前:デフォルトの名無しさん mailto:sage [2010/12/26(日) 18:09:36 ]
sprintfがスレッドアンセーフってのはどこ情報?

555 名前:デフォルトの名無しさん mailto:sage [2010/12/26(日) 19:50:50 ]
あとだしで申し訳ないがライブラリはglibcです

>>554
ttp://slashcolon.com/wordpress/2007/12/25/
ttp://www.kmonos.net/alang/d/2.0/ctod.html#printf
Dでスレッドセーフにしました=Cだとスレッドセーフちがう
と解釈しました

ていうか、そもそもprintfがスレッドセーフだという情報がない。
不明なうちはアンセーフ扱いするのが俺のジャスティス



556 名前:デフォルトの名無しさん mailto:sage [2010/12/26(日) 20:00:44 ]
なるほど
確かに

557 名前:デフォルトの名無しさん mailto:sage [2010/12/26(日) 20:13:26 ]
それ英語版見たらスレッドセーフなんてどこにも書いてないぞ・・・
> writefln() improves on printf() by being type-aware and type-safe:
誤訳じゃないのか

558 名前:デフォルトの名無しさん mailto:sage [2010/12/26(日) 20:16:54 ]
ttp://stackoverflow.com/questions/467938/stdout-thread-safe-in-c-on-linux
適当にぐぐったけどglibcはスレッドセーフとか書いてるような感じ

559 名前:デフォルトの名無しさん [2010/12/27(月) 11:09:50 ]
へえ

560 名前:デフォルトの名無しさん mailto:sage [2010/12/27(月) 14:34:33 ]
探しても「セーフだろう」「たぶんセーフ」ばっかりしか出てこない
むずむずするなぁ

561 名前:デフォルトの名無しさん mailto:sage [2010/12/27(月) 15:03:50 ]
IEEE Std 1003.1-2001の定義では、例外的にアンセーフで良いとされているもの以外は
スレッドセーフ。

pubs.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_09.html

562 名前:デフォルトの名無しさん mailto:sage [2010/12/28(火) 19:19:26 ]
過去スレ全部はみれなかったんだけど、マルチスレッド関連の良書をまとめてみる。
この他にこれがいいとかあったり、これ駄目とかあったら教えて。


[一般]
並行コンピューティング技法 ―実践マルチコア/マルチスレッドプログラミング

The Art of Multiprocessor Programming 並行プログラミングの原理から実践まで

増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編


[java]
Javaスレッドプログラミング―並列オブジェクト指向プログラミングの設計原理 (OO SELECTION)

Concurrency: State Models and Java Programs 2edition

Java並行処理プログラミング ―その「基盤」と「最新API」を究める


[windows]
Win32 マルチスレッド プログラミング

Advanced Windows 第5版 上
Advanced Windows 第5版 下


[Unix]
POSIXスレッドプログラミング



563 名前:デフォルトの名無しさん mailto:sage [2010/12/31(金) 19:52:51 ]
[C++]
インテルスレッディング・ビルディング・ブロック

主にこのライブラリの使い方だが、
他にもスレッド管理の考え方が載ってる。まぁオープンソースなので見れるのだけど

564 名前:デフォルトの名無しさん mailto:sage [2011/01/03(月) 21:56:27 ]
ありがとうございます。C++の良書をあまり知らないので助かります。


565 名前:デフォルトの名無しさん mailto:sage [2011/01/15(土) 09:14:58 ]
concurrent hashmapのC++実装って
なんでないの?



566 名前:デフォルトの名無しさん mailto:sage [2011/01/15(土) 09:49:16 ]
>>565
キミのためにお取り置きしてある。

567 名前:デフォルトの名無しさん mailto:sage [2011/01/15(土) 10:31:02 ]
>>566
並列mapでいいから実装ないの?
C++って並列コンテナないから何もできないよね

568 名前:デフォルトの名無しさん mailto:sage [2011/01/15(土) 18:21:33 ]
>>567
キミが作るだろうと思って残しておいた。

569 名前:デフォルトの名無しさん mailto:sage [2011/01/16(日) 11:14:37 ]
>>567
俺のところにはある。

570 名前:デフォルトの名無しさん mailto:sage [2011/01/16(日) 11:28:44 ]
C/C++はアセンブラと高級言語の間みたいな位置だからな
言語そのものを作るとか、OSを作るとか、リソースの厳しい組み込み系で作るとか、
そういう用途じゃないなら別に強力な言語ではない
ネイティブのCPUの挙動を理解しないとC/C++の有用性は半減すると思われ

571 名前:デフォルトの名無しさん mailto:sage [2011/01/25(火) 23:02:03 ]
すみません、spin-lockをしている間にCPUの使用率を下げる方法を知っている方はいますか?
調べてみると、rep;nop命令やSSEのpause命令をがそれに該当するように思えるのですが、
使ってみても何ら変わりませんでした。
スピンロックつかっわないとは思うんだけど。
自作のスレッドバリア関数(自作のspin_lock)を作って、
たとえば、
if(threadnum=5) sleep(10);
my_barirrer();
とするとスレッド5を待っている間は5以外のCPU使用率が100%近くなってしまいます。
それに対してOpenMP使った場合では、
if(threadnum=5) sleep(10);
#paragma omp barirrer

だと待っている間はCPU使用率は殆ど変わりません。
ちなみに自作のspinlockは下記のような感じです。
if(thread_num == 0)
{
asm volatile(
"Loop1:\n\t\t"
"movl (%0), %%eax\n\t\t"
"movl (%1), %%ebx\n\t\t"
"lfence\n\t\t"
"cmpl %%ebx, %%eax\n\t\t"
"rep;nop\n\t\t"
"jne Loop1\n\t\t"
:
:"r"(&lock->sync), "r"(&lock->maxthreads)
:"memory","%eax","%ebx"
);

というか、これって間抜けですかね?

572 名前:デフォルトの名無しさん mailto:sage [2011/01/25(火) 23:10:46 ]
自前でタスク切換えみたいなことするしか

573 名前:デフォルトの名無しさん mailto:sage [2011/01/25(火) 23:15:42 ]
>>571
>>369

574 名前:デフォルトの名無しさん mailto:sage [2011/01/25(火) 23:24:51 ]
>>573
お前友達いないだろ

575 名前:デフォルトの名無しさん mailto:sage [2011/01/25(火) 23:34:47 ]
>>571
Sleepさせりゃいいんじゃね。



576 名前:デフォルトの名無しさん mailto:sage [2011/01/25(火) 23:44:45 ]
割り込みでしか切り替わらないコードで使用率下げたいというのが

577 名前:デフォルトの名無しさん mailto:sage [2011/01/28(金) 22:22:30 ]
さむいな(´・ω・`)

578 名前:デフォルトの名無しさん mailto:sage [2011/01/28(金) 22:43:23 ]
寒稲

579 名前:デフォルトの名無しさん mailto:sage [2011/01/31(月) 22:10:29 ]
>>571
CPU使用率が100%じゃないロックなんて、スピンロックとは認めない。

580 名前:デフォルトの名無しさん mailto:sage [2011/02/01(火) 00:53:40 ]
そもそも100%じゃないってことはコンテキストスイッチしてるってことになるでしょ?
何のためのスピンロックなのよあり得ない。


581 名前:デフォルトの名無しさん mailto:sage [2011/02/01(火) 10:50:42 ]
スリープロックのループもスピン扱いすることもあるから何とも

582 名前:デフォルトの名無しさん mailto:sage [2011/04/04(月) 19:37:25.20 ]
ちょっと聞いていい?

以下のコードでnotifyAllされたらどうなるのって質問

void A()
  synchronized(Lock){
    if(List.size() == 0){
      try{ Lock.wait(); }(Exception e){}
    }
    //以下処理続く
  }
}

このコードで複数のスレッドが待ち状態だったらnotifyAllとき再度Lockを取りに行ってくれるの?
もし、そうだったとしたら。
結局はnotifyで1つのスレッドのみ動かすってのと同じことになるの?

それとも再起処理的に以下のようにしなきゃだめ?
void A()
  synchronized(Lock){
    if(List.size() == 0){
      try{ Lock.wait(); }(Exception e){}
      A(); ←ここでさらに再帰的に同じメソッドを呼び出す
    }
    //以下処理続く
  }
}

おしえてエロイひと。。。

583 名前:デフォルトの名無しさん mailto:sage [2011/04/04(月) 19:47:38.94 ]
>>582
notifyAll を呼ぶと、wait してたスレッドはすべて起きて、 Lock を取りに行く
どうせみんなすぐには取れないから Lock 待ち状態になるが、すでに wait からは外れてるので、 Lock を取れた順にすべてのスレッドが動き出す

notify の場合は、wait してたスレッドのうちひとつだけが起きて Lock を取りに行く
他のスレッドは、その後 Lock が空いても、眠ったまま起きない

wait はふつう再帰じゃなくて while にする
synchronized (Lock) {
 while (List.size() == 0) {
  Lock.wait();
 }
}
waitは、notifyされてなくても間違って起きることがあるらしいので、このように書くべきこととされている

584 名前:デフォルトの名無しさん mailto:sage [2011/04/04(月) 20:17:38.60 ]
>notifyAll を呼ぶと、wait してたスレッドはすべて起きて、 Lock を取りに行く
ということはnotifyAllでそのまま下に処理が流れていくんじゃなくて

再度 synchronized(Lock){ ←この部分に処理が戻ってくるイメージなんですかね?

別のメソッド内の以下のようなコードでnotifyAllをかけようと思ってたんだけど、
ちゃんとnumの個数分以上のスレッドは再度、wait状態に入ってくれるのか心配でした
  for(int i = 0 ; i < num ; i++){
    List.add(object);
  }
  Lock.notifyAll();

それと。
 while (List.size() == 0) {
   Lock.wait();
 }
これしなきゃいけないんですね。Javadoc見てきました。

>>583 ありがとー。

585 名前:デフォルトの名無しさん mailto:sage [2011/04/04(月) 21:55:04.24 ]
>>584
synchronized のところまで戻るわけじゃなく、synchronized の中にいるまま、 wait のところで、
Lock をいったん解放、おやすみなサイして、起きたら元通りに取りにいく
wait は synchronized の中でありながら Lock を手放している特殊な場所

notifyAll を呼んだ側のスレッドは、notifyAll を呼んだあとそのまま下に流れていく
というのも、notifyAll を呼んだ時点では Lock は notifyAll 側のスレッドが握ってるので (synchronized 中のはず)、
wait 側のスレッドは起きるけれども、Lock を取れない
notifyAll 側が synchronized から抜けるなりして Lock を解放すると、wait 側が Lock を取って動き出せるようになる



586 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 01:36:55.92 ]
質問です
CreateThreadで複数のスレッドを作ったときに渡したパラメータは
スレッドごとに別々のものを渡してもいずれ同じものに書き換えられてしまうと思うんですけど
これをスレッドごとに別々のままにしてやるにはどうしたらいいのでしょうか
VCなら__declspec(thread)をつけるとTLSが使えると読んだのですが
これをCreateThreadに渡すThreadProcのどこで使えばいいのかわかりません

587 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 03:14:14.44 ]
>いずれ同じものに書き換えられてしまう
そういうことをやってるだけでしょ

588 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 08:33:13.11 ]
>>586
お前がやってんのは
int a;
int* b = &a;
int* c = &a;
int* d = &a;
のb,c,dが別々のものと言ってるのと同じだろ

589 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 08:38:22.51 ]
あーなるほど、同じ場所(=ポイント先)を渡して「別々のもの」と言い張っているのか。

590 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 11:41:30.98 ]
forkってスレッドセーフ?

591 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 11:56:15.17 ]
>>590
関数だけ見ればMT-safe
pubs.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_09.html
でも
d.hatena.ne.jp/yupo5656/20040715

592 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 21:24:18.36 ]
別のポインタ渡したつもりで同じものを渡していたことに気づいて悲しくなりました
お手数おかけしました

593 名前:デフォルトの名無しさん [2011/06/23(木) 08:39:51.24 ]
スレッドって、毎秒ごとに数百回の開始と終了を繰り返すような使い方は正しいの?
それとも、必要な時だけスレを立てる使い方じゃなくて、
スレは基本的に立てっぱにしといて、用がある時にメッセージ等を送るという使い方をすべき?


594 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 08:45:48.47 ]
スレッドの開始はそれなりにコストの大きい処理だから
スレッドプールにするのが正解

595 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 08:49:17.54 ]
なるほど。直観的じゃないのな。



596 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 09:10:49.87 ]
用途によるよ。一度スレッドを起動したら数十秒は戻ってこないならプールしなくても大差ない。

597 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 09:47:04.06 ]
593の前提と変わってるじゃんか






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

前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