1 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 21:35:32 ] マルチスレッドプログラミングについて語るスレ。 その1 pc3.2ch.net/tech/kako/997/997345868.html その2 pc5.2ch.net/test/read.cgi/tech/1037636153/ その3 pc8.2ch.net/test/read.cgi/tech/1098268137/ その4 pc8.2ch.net/test/read.cgi/tech/1130984585/ その5 pc11.2ch.net/test/read.cgi/tech/1157814833/ OS・言語・環境は問わないが、それゆえ明記すべし。 テンプレ 【OS】 【言語】 【実行環境】 【その他突起する事項】
51 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 18:43:55 ] ソースアップしてくれんとわからんね。起動やJITにかかってる時間も含んでる?
52 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 19:00:11 ] 計測は、できるだけ実際の実行部分だけになるように 一応注意してやってはいるんだけどねぇ。 今外なのでソースは出せんが、ゲートとカウントダウンラッチ使って 間の時間を計測してる。計測精度は問題ないものを使ってる。StopWatchね。 ラッチは自作だけど、100万回ループの最初と最後だから 実装がいまいちでもまあそれほど大きな影響はないはず。 スレッドが多いほど処理スレッドに割り当てられるCPU時間が ある程度は増えるかも知れないが、5倍てのはそういう問題の範囲じゃないと思うんだよね。
53 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 19:06:12 ] >>39-40 物凄くレアなケースだが、いわゆるABA問題にハマる可能性があるよね。 キューが空のときに、Enqueue()の > if (next == m_tail || m_buffer[current].Stored) return false; の行の実行が終わった直後にコンテキストスイッチが入るなどして、次の > } while (Interlocked.CompareExchange(ref m_head, next, current) != current); が実行されるまでの間に別スレッドがcapacity + 1回のEnqueue()と1回のDequeue()を行ったとすると、 キューが満杯なのにCompareExchangeが成功してしまう。 同じことはDequeue()側でも起こりうるね。(キューが満杯のとき、Dequeue()内のif文と CompareExchangeの間で別スレッドがcapacity + 1回のDequeue()と1回のEnqueue()を行った場合とか) こういう問題への対策法としては、capacityを十分大きくしておくくらいしか 思いつかないけど……
54 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 19:08:40 ] windowsアプリでやってるので、後でコンソールでも試してみよう。 あとは、スレッド1このときにメインスレッドで直接実行してどうなるか、かな。
55 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 19:12:59 ] >>53 なるほど、ちゃんと考えてないけど確かになりそうだ。 やっぱ更新バージョンが必要になるのかなぁ…
56 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 19:24:54 ] いや、更新バージョンじゃだめだな。 インデックスの扱いを工夫、かな。
57 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 20:01:55 ] つーかみんな論文とか読んで先人はどう工夫した かぐらい考えてからソースコードかけよなぁ
58 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:11:48 ] Advanced Windows ttp://www.amazon.co.jp/Advanced-Windows-改訂第4版-ジェフリー-リッチャー/dp/4756138055 この本、よんだことある人いる? C,C++でマルチスレッド組むのに有用な本なんだそうなんだが、いかんせん値段が・・・
59 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:19:18 ] >>53 変数は配列長の整数倍でできるだけ長い周期でループするようにして、 インデックス使用時に配列長で剰余をとるようにしたら、結構遅くなったw インデックスで必要なビット長を求めて、残りの上位ビットを サイクル数のカウンタとして使用するようにしたらだいぶ速くなった。 前のよりは1割程度遅くなったが、ここらでいっぱいいっぱいかな。
60 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:22:14 ] >>59 そんな申し訳ないことして実際どれぐらい役に立つのw オナニーバイナリ生成ぐらいがいいとこだよね?
61 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:24:52 ] 日本語でOK お前さんは役に立たないことは一切やらないのかね?
62 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:26:20 ] まあいろんなものを実装する練習になるから まったく役に立たないわけでもないんだけどな。
63 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:29:52 ] >>62 中途半端にかじった奴が糞コード晒すのとどうか思うのだが? 使えるならまだしも危険すぎだろwこんな糞コードしかかけないんだから 止めろよ。ゆとり夏房は本当に困る
64 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:33:46 ] どしたん?
65 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:37:30 ] >>63 「これこれの理由で危険だから使わないように」とでもコメントすれば済むことではないかと。
66 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:41:35 ] 糞なとこを指摘してやれば役にも立つのに。 >使えるならまだしも危険すぎだろw いや誰も実際に使おうなんてやつはいないだろw
67 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:45:42 ] >>66 こういうものは指摘しても理解できないだろ? 俺はこんなコード書くやつがまともな姿をした 人間だとはとても思えないんだよ。
68 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 23:52:36 ] >>59 ていうか配列長を2の冪乗に切り上げておけば、 ビットマスクとのAND演算だけで済むでしょ。
69 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 00:01:21 ] それは思ったが、無駄が多かったのと、キャパとの兼ね合いで 空もしくは一杯の判定が微妙にややこしくなりそうなのでやめた。 でも確かにサイクルカウントを上位ビットに持つよりはずっと単純だったかも試練。
70 名前:68 mailto:sage [2007/08/19(日) 00:10:34 ] >>69 いや、capacityも配列長に合わせて切り上げちゃっていいんじゃない? どうせパフォーマンス重視なんだから、capacityなんて厳密に扱う必要はないと思うが。
71 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 00:21:34 ] うーん、容量固定のキューだったからね、今回はこれは変えたらだめかなって勝手に。 まあ、実際にこんなものを作ることがあったらそうすると思う。
72 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 05:21:55 ] >>67 >こういうものは指摘しても理解できないだろ? ここは相談室なんだから、相談相手になる気がないなら他へどうぞ
73 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 09:11:12 ] >>58 マルチスレッドに限らず、Windowsプログラミング全般においてその本は とても有用なので、買って損はないよ。 ただし、各種オブジェクト単体での深い説明が中心で、スレッドの作法だとか そんな話は皆無で、マルチスレッドの入門書として期待しているなら やめた方がいい。 例えば、クリティカルセクションが他の同期オブジェクトよりも軽いという点について、 OS内部でどう実装されているのかという話が書いてある。 マルチスレッドの話が読みたいなら「Win32マルチスレッドプログラミング」の方が いいと思う。(俺は見たことないが)
74 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 19:00:00 ] >>67 なにまともなフリをしてんだおまえはw
75 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 19:04:25 ] でどの辺が糞コードでどの辺が中途半端にかじったぽいのか早く教えて
76 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 14:15:47 ] この絡み方厨房の典型だなw
77 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 14:18:42 ] そうやってすぐ厨房扱いする奴も大して変わらん
78 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 16:45:02 ] 厨房に厨房が返してるだけだろ
79 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:21:13 ] mutexが永田ロックかけてるのか まだロックかけないで痛めつけてるのか 計測するほうほうないですか? pthreadでお願いします。
80 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 21:42:55 ] C言語歴15年とかいう人が ローカルにコピーすれば以下のような コードがOKだと主張するのですが本当なのw? struct data{ int len; char buf[128]; } struct data[6]; int index; これをグローバルで定義しておいて void *thread_1(void *arg){ data[index]; //データ書き込み処理 index++; } void *thread_2(void *arg){ int l_index = index; //データ読み込み処理 } 絶対 indexをローカル変数に代入して 順番考慮してないから2回処理しそうな 気がするんだけどさー なんかこんな人のプログラム見るのやだ 逃げたいタスケテ
81 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 21:48:16 ] >>80 実はスレッドでなくファイバだったとか。
82 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 21:50:26 ] HPの鯖でpthread使って書いてますけど ファイバってことはありえないですよねw? まじ釣りとかじゃなくて本気でこんなコード生成 するんですよ。困ってる
83 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 21:53:21 ] >>80 オマエの日本語やコードの貼り方も相当なもんだ。困ってる
84 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 21:53:47 ] ごめん許してくれ
85 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 21:55:27 ] マ板向けの話題かな
86 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 21:56:49 ] これって絶対ネタだよな 馬鹿でも考えりゃ排他必要な事解かると
87 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 22:03:55 ] 満を持してvolatileの登場だな
88 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 22:06:04 ] >>87 それもネタだろw
89 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 22:51:08 ] >>80 悪いがそのコードの意味がわからなくてなんとも胃炎。
90 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 23:06:45 ] >>89 文脈から想像して、 int l_index = index; このようにindexをローカル変数にコピーしてから、そのコピーを使って 配列参照すればロックとかいらない、とC言語歴15年さんが主張している。 と読んだ。 ただ、コードは明らかに抜粋なので、状況によってはOKなのかも知れない可能性はある。 thread_1がデータの更新処理で、thread_2は現在の最新データを取得するだけ、 配列は十分に大きく、データの空チェックは別にあるとか。 あるいは、thread_1とthread_2でキューを実現しようとしているなら問題だけど、その場合も コードが断片すぎるので、前後の記述によっては問題ないかもしれず。 それを含めて>>80 が明らかな問題であることを認識した上で書き込んでいるなら、 最初からマ板に行くべきかと。
91 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 23:14:21 ] >>90 SMPなんかでCPU入れ替わったら 問題おきないかなぁ?
92 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 23:22:06 ] >>90 キューなどの順序性保証が必要なものだとあきからにやばいけど、 掲示板などに書き込まれたデータの最新の1レコードを定期的に 表示更新っていうパターン(厳密な意味での最新版にはこだわらないもの) なら、volatileのレベルで妥協できる場合もあるんじゃないかって 思ったんだけど。 thread_2の例が現状のindexをいじらずに現時点のindexのレコード参照 しているだけみたいだから。
93 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 23:26:28 ] 絶対2回読む可能性捨てきれないし こんな実装商用レベルでしないよなぁ きっとどっかの研究室だろうなぁ。 教授が書いたコードだから絶対だみたいな感じなんだろうなぁ
94 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 11:03:22 ] それならまさに発見的手法だな
95 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 22:57:45 ] 【OS】 WinXP SP2 【言語】 VC8 【実行環境】 2000以降、可能であれば9x以降 【その他突起する事項】 C++ソースコード上での解決が望ましい TerminateThreadだと、終了させたいスレッドのハンドルがあればスレッドを終わらせる事ができますが、 これは基本的に最終手段としてスレッドを終わらせる為の物で、初期のスタック割り当てを解除する機会がなかったり、色々問題があるようです。 なので、スレッド外部からExitThreadの様にスレッドを終わらせるにはどうすればいいんでしょうか。 対象のスレッド内で、終了される"かもしれない"タイミングは把握可能です。
96 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 23:10:34 ] 終了フラグを用意して、スレッドが終わって欲しくなったらフラグを立てる。 対象スレッド内で、今だったら別に終了してやってもいいというタイミングで、フラグをチェックして自主的に終了する。 フラグの読み書きは、ちゃんとクリティカルセクションやミューテックスで囲むか、インターロック関数を使うか、メモリバリアを張ること。
97 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 23:11:47 ] ・終われフラグなりイベントなりを用意 ・要所要所でフラグ/イベントをチェックしてオレオレ例外をthrow ・スレッドの開始点でtry〜catch でとりあえずできる 他のやり方でも結局こうなると思う コールスタックにC関数が挟まるとダメな場合もあるので注意
98 名前:.95 mailto:sage [2007/08/28(火) 23:18:11 ] Sleepしてる間に終わらせるフラグが立つので、待ち時間が長いです...
99 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 23:25:03 ] >>95 メッセージなり何なりを対象スレッドに投げて、対象スレッドに自ら涅槃の道に旅立ってもらう。
100 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 23:44:30 ] >>98 Sleepを細かく分ければいい。 for (int i=0; i < 10; ++i) { Sleep(100); check_exit_flag(); } こういうポーリングがいやならEventつかって待機関数で待つとか
101 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 08:59:33 ] 【OS】 Xp sp2 【言語】 VBA 【実行環境】 Q6600 VBAってマルチスレッドできないともできるとも明記されていないんです。 質問なんですが、VBAにかかわらずマルチスレッド化によって、『比較的発生しやすい障害』というのは何でしょうか? C等ならPUSH、POP等のメモリ操作がいちばん気をつかいそうなところですよね。 VBAでは、適所に Do Eventを2つ入れること(実験により1つではエラー起きやすい)、変数のグローバル宣言にきをつけること(2つのスレッドで同じ変数を呼ばない)ことくらいですかね。プロシージャーは同時に使っても今のところ問題ありません。 どうぞよろしくお願いします。
102 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:07:45 ] >【言語】 VBA >VBAにかかわらず どっちだよ
103 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:54:17 ] >マルチスレッド化によって、『比較的発生しやすい障害』 >101のような香具師が手を出してプロジェクトを台無しにする可能性が高まること。
104 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:55:09 ] 日本語でおk
105 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 11:36:22 ] > VBAってマルチスレッドできないともできるとも明記されていないんです。 M$に問い合わせろよ
106 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 12:51:30 ] 煽る人ばっかりで、本日はまともな人いないんですねー。>< 失礼しました!
107 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 22:41:29 ] >C等ならPUSH、POP等のメモリ操作がいちばん気をつかいそうなところですよね。 お前はいったい何を言っている?
108 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 22:47:28 ] >>101 お前の居場所はこっちだ pc11.2ch.net/test/read.cgi/tech/1178723829/
109 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 22:50:49 ] Cカップの子を触るのにおもいっきり触るのか それともソフトタッチでいくのかこれは結構気を使うって ことなんだな
110 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 22:58:17 ] PUSH,POPは気を使わない。それぞれ単純に排他制御するだけだ。 気を使うのは、例えば何かの目的のために一つの処理の中で pop,pushを続けて行おうとたらその間に別スレッドが実行されて 意図せず状態が変わってしまうようなことが発生すること。 排他制御していない箇所はどんなタイミングでどのスレッドが 実行されるかわからないことを肝に銘じておく必要がある。 『実験により1つではエラー起きやすい』 こんなこと言ってるようじゃ駄目だ。なぜ1つでエラーと なったのか論理的に分かるまで追え。まあDoEventを愛用 する奴にはマルチスレッドは剥いていない
111 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 23:15:46 ] VBAってCOMオブジェクト主体じゃないのか マルチスレッドの意味あんのかな
112 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:43:06 ] >101 VBA単独でスレッドを起こす手段がないからな。明記する必要もないだろ。 VBAだけじゃMutexとか同期用のオブジェクトをどうやって扱ったらいいものか、 スレッドを起こす手段がないので同期に関する記述もないからなぁ。 それにCOMだし意味がないかもな。
113 名前:デフォルトの名無しさん [2007/09/08(土) 01:29:00 ] 適当なスレが判断できないのでここで質問させて下さい。 msvcrt.dllやスタティックなVC6以降のmallocとfreeの動作についてですが、 _beginthreadexで作成した各スレッドで、あるスレッドがmallocしたメモリを 違うスレッドでfreeする事は合法でしょうか? 過去の自分の書いたコードで見つけてしまいました。 なんかやばそうな気はするんですが。
114 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 01:35:12 ] >>113 何を知りたいの?もうちょっと明確に話まとめろよ このインキン野郎が
115 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 01:51:13 ] >>113 スレッドが異なることは問題ない。 メモリ管理で問題になるのはモジュール(EXEやDLL)が異なる場合。 ただし、この場合でもすべてのモジュールのCランタイムを 動的リンク(msvcrXX.dllを使う)にしておけば、問題は発生しないはず。
116 名前:デフォルトの名無しさん [2007/09/08(土) 21:25:21 ] ありがとうございました。 一応きちんと動いてはいるみたいなので放置します。
117 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 23:20:00 ] マルチスレっ
118 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 03:22:50 ] 合法か違法かで言えば合法だろうし、(問題でてないのに)直すってのもアレだけど、 行儀わるいよな。
119 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 03:47:08 ] >>118 アプリ全体のログを採る処理で、printfみたいな書式文字列を mallocやreallocでメモリに貯めていって、ある程度溜まった段階で 清書してファイルに吐き出して、使った分をfreeしてくという仕組みなんですが、 CriticalSectionの排他で順番だけ決めてるだけで、どのスレッドが メモリ管理をする、というのを決めてないんです。 まあ、最初と最後の破棄とかはメインスレッドがするんですが。 試しにスレッド間通信したらパフォーマンスが悪かったので こんな仕様にしたような記憶があります。 どうしたらいいでしょうかね。
120 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 11:39:09 ] きちんと管理できてるんなら問題ないでしょ。 C++ならstd::stringとか使ってくれた方が楽そうだけど
121 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 15:29:38 ] マニアックにboost ropeで
122 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 07:56:13 ] boost? STLportじゃなくて?
123 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 18:00:27 ] XP/2000のスレッドで質問です。 親子関係にあるスレッドで、親をなるべくブロックさせずに、 毎秒数KB程度のデータを子に送信したいと考えています。 (子は1つで、子の応答はいくら遅れてもかまわない) クリティカルセクションでデータの排他をに試したら、 子供の処理が長引くだけ親がブロックされてしまうので、 別の方法を検討しています。 こういった場合、スレッド同士の同期オブジェクトを介さずに データをバッファに溜めておける名前付きパイプが良いかなと 思ったのですが、こういった用途に使えるでしょうか。
124 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 18:16:31 ] パイプの長さは必ず確保するという話ではなかった気がするなあ >クリティカルセクションでデータの排他をに試したら、 >子供の処理が長引くだけ親がブロックされてしまうので 通常、 バッファへの追加 バッファからの取り出し 以外は排他する必要はないと思うんだが、違うのか?
125 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 18:25:19 ] >>123 子スレッドが処理終わるまでロックさせっぱなしにしないで、 さっさと必要なデータをコピーしてクリティカルセクションから抜けたら?
126 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 18:38:07 ] >>123 子供2つにすればいいだろボケシネカス
127 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 00:55:31 ] 10ヶ月かかるし。
128 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 20:48:36 ] 処理が終わるまで待ってたらスレッドの意味が無い。
129 名前:デフォルトの名無しさん [2007/09/19(水) 20:55:43 ] 【OS】 Debian Etch Linux kernel 2.6.18 【言語】 C pthread 【実行環境】 GNU gdb 6.4.90-debian gdbでのマルチスレッドのデバッグ中、任意のスレッドでステップ実行をしていると とつぜんカレントスレッドが切り替わり、 ステップ実行していたスレッドの実行位置が失われる現象に遭遇します。 デバッグ対象のプログラムは、動作確認がとれているオープンソースのプログラムです。 原因、回避法等ご存知のかた、ご教示いただけないでしょうか
130 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:12:16 ] gccスレにも行っとけ
131 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 22:58:11 ] >>129 250万でサポートしてやるけどどうよ?
132 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:06:29 ] 250万の内訳を教えてくダサイ
133 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:24:38 ] サンドバック料:200万 治療代:50万
134 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:28:49 ] >>132 年間保守契約費 200万 登録費 30万 事務手数料 20万 だが?
135 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 23:17:41 ] ずいぶんと安いね
136 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 04:16:06 ] これからはsignalfdだな
137 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 14:05:07 ] ロックしたら負けかな、と思ってる
138 名前:デフォルトの名無しさん [2007/09/24(月) 18:56:19 ] erlangマンセー
139 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 12:41:04 ] malloc(), free()ってスレッドセーフなんですか?
140 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 15:01:14 ] お前が使っているライブラリのマニュアル嫁
141 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 18:07:16 ] >>140 man malloc ってやってもスレッドセーフに関する記述がないんです...
142 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 18:41:26 ] 使っているOSの名前、バージョンを言わないのは初心者気取りか?
143 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 20:23:28 ] 対応してる。大丈夫だ。
144 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 22:14:38 ] >>143 安心しました。ありがとうございます。
145 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 23:24:04 ] 藻前詐欺にあい易いタイプだろ
146 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 23:39:03 ] ワロタ
147 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 01:06:02 ] 昔おれ衝動買いの時によくやった 店員に騙されるパターン 信じてたのに・・・・
148 名前:デフォルトの名無しさん [2007/09/30(日) 01:20:45 ] マルチスレッドでcoutを使うと表示がぐちょぐちょになって醜いです。 どうしたらいいでしょうか?
149 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 01:21:34 ] C++の仕様。 printf使いなさい。
150 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 01:27:17 ] すみませんprintfでも同じです
151 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 01:31:42 ] coutという一つの資源を複数のスレッドで取り合うからそうなる。 排他機構を使ってひとつのスレッドが使っているときに他のスレッドが使うことが無いようにしろ。