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

366 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 07:28:20 ]
>va_listはプロセスで1つだけしか持てない

367 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 07:59:36 ]
それとスレッドセーフの話にどんな関係が?

368 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 08:31:37 ]
>>365
簡単。

va_listはプロセスで複数もてるから
スレッドセーフ

369 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 11:18:50 ]
すみません、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"
);


370 名前: ◆0uxK91AxII mailto:sage [2010/04/21(水) 15:37:33 ]
>>369
方法はあるけど、物凄くマヌケで無意味だから誰もやらない。

371 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 19:01:35 ]
スレッドとかの切り替えを自前で用意するとか

372 名前:369 mailto:sage [2010/04/22(木) 09:40:25 ]
いろいろと試してみたのですが、マヌケな方法しか思いつきませんでした。
(スピンを何回かしたら、nanosleepを使うとか)
pthreadのライブラリのソースを見てみると、futexのシステムコールが呼ばれているようですね。
OpenMPで生成したスレッドの中で実行される関数間でスレッドの同期をとりたかったのと、
せっかくOpenMPを使っているから、
pthreadとか使いたくなかったので自前のspin_lockを作ってみました。
マヌケな質問をしてすみませんでした。



373 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 03:22:14 ]
ヒント:スピンロックを使わない

374 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 22:01:03 ]
Win32でスレッド間のイベント通知をやりたいんですが
2つのスレッドが同時にそれぞれSetEvent(), ResetEvent()を呼び出した場合の動作って定義されてるんでしょうか?
やっぱりクリティカルセクションで囲ってやらないとまずいですか?



375 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 22:39:08 ]
>>374
囲む必要は無い。

376 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 08:17:54 ]
>>375
ありがとうございます。

377 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 20:41:23 ]
イベントオブジェクト自体の動作には問題ないけど、
使い方ミスりやすいから十分気を付けた方がいいよ。


378 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 23:08:00 ]
プロのコードではイベントオブジェクトは使われない

379 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 23:37:24 ]
配布したときに問題が出るからな

380 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 03:50:40 ]
どんな?

381 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 22:45:33 ]
無名にすれば他のプロセスと衝突することも無いし、kernel32.dllだから別にDLLも不要だし問題が思いつかないな


382 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 07:37:01 ]
なんか勘違いしてんだろ


383 名前:デフォルトの名無しさん [2010/05/16(日) 21:15:32 ]
wait-freeなキューの実装を可能にするのに必要な不可分操作ってどんなんですか?

384 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 23:08:56 ]
候補となる不可分操作には何があるの?



385 名前:383 [2010/05/16(日) 23:57:41 ]
>384
JAVAのConcurrentLinkedQueueだとCASをつかってるってことしか知りませんが..


386 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 00:45:56 ]
wikiによるとcasみたいだね
ja.wikipedia.org/wiki/Lock-free%E3%81%A8Wait-free%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0

387 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 23:12:58 ]
スレッド間のヘルスチェックに定番な方法ってあるのでしょうか?
 ・マスターなスレッドAが外部変数にスレッド数分bit1を立てる
 ・B以降のスレッドは、自分に対応するbitを落とす
 ・一定時間、0じゃなかったら誰かが止まってるのでNG
とかすると、sem_wait()で普段寝ている人(これはその時だけ起こせばいい?)や、
recvやselectで待ってる人の確認はできない。。

388 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 00:00:00 ]
スレッドのヘルスチェックって要るのかな?プロセス間だったら必要かも知れなけど。

389 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 00:05:09 ]
大事な役割を持ったスレッドが刺さってないか確認したいんじゃないの

390 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 01:47:25 ]
タイムアウト指定して待ちっぱなしにならないようにするのが基本

391 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 18:56:29 ]
ワーカースレッドとUIスレッド分けたとき、時間のかかる作業を
ワーカースレッドがしているとき、UIスレッドはどうしているべきでしょうか

今は終わるのを待たずに終わるまでデータ変更の起こる操作を禁止しています
でもそれだとウィンドウ動かせるくらいしかメリットがないので考え中です

392 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 19:03:15 ]
>>391
俺は[中止]ボタンが押されるのを待つか、タイマーで定期的に終了したかどうか
チェックしてる。あとプログレスバー表示。

393 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 19:49:50 ]
ボタンを禁止にしたりキャンセルを受け付けたり面倒だよな
それとプログレって、量的な変化ならいいが、
手続き的な進行表示には不向きだよな

394 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 20:05:26 ]
全体量がわからないやつはつらいよね
\-/-\-...ってやつが好きw



395 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 21:03:40 ]
経過表示なら1/n「(説明)」〜n/n「完了」でいいと思うんだ

396 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 23:34:30 ]
progress_display「呼んだ?」

397 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 09:11:50 ]
いや、全然呼んでないよ

398 名前:デフォルトの名無しさん mailto:sage [2010/06/26(土) 14:48:12 ]
マルチスレッド・アプリケーション開発のためのインテル・ガイド
www.xlsoft.com/jp/products/intel/article/guide/index.html

399 名前:デフォルトの名無しさん [2010/06/27(日) 14:54:02 ]
>>391
おれはその処理に関連するメニューだけロック(選択不可とか無視とか)して他の操作は許可してる
処理が終わったら通知ポップアップ
処理状況なんかはモーダレスじゃないプログレスバーかステータスバー表示

400 名前:デフォルトの名無しさん [2010/06/27(日) 15:01:41 ]
>>393
でも長時間うんともすんとも言わないと不安になるからそういう場合は一秒に一ブロックぐらい進むプログレスバー繰り返してる
中止は処理スレッドに定期的に中断フラグチェックさせてプログレスバーダイアログのOnClose/OnCancelで終了フラグOn+WaitForSingleObjectさせればOK

401 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 23:09:47 ]
ttp://blogs.wankuma.com/jitta/archive/2010/02/05/185818.aspx
なんかえらい絡まれてるくらい突っ込まれてるみたいなんだけど
やっぱりこの記事おかしいの?
それともコメントの方がおかしい?


402 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 23:28:25 ]
>>401
バブルソートを題材にするとか並列化のサンプルとして適切じゃないというかフェアじゃないというか、あえてそれを選ぶのはなぜ?って話でしょう。

403 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 23:40:12 ]
>何でもかんでも並列化すれば、等しく速くなるわけではない

記事の結論には同意だけど記事書いてるひとはアホ


404 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 02:56:46 ]
>>403
同意だな。
並列化に向いたアルゴリズムをつかわにゃ早くならんしな。
ていうか変数shareしすぎ。



405 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 08:13:40 ]
だらだらと下手糞なコードを書いて速くならねえよと喚かれてもな
そんな記事にはほとんど価値がない

406 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 09:47:23 ]
結局バグってたっぽいw
コメントが間違ってなければだが。


407 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 10:07:39 ]
記事自体は、アルゴリズムによって効率的に並列化できるとは限らないから云々んという内容なので、
記事自体が(素人にとっては)無意味だとまでは言わんが、
この人偉そうな言い方したり他人の記事に対しては重箱レベルで突っ込んだりもしてるくせに
自分の記事は内容が結構いい加減なんだよな。


408 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 11:48:12 ]
そんな人は世間にはいっぱいいる

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使えないはずなので、マルチプロセッサが構成出来ない。






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

前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