マルチスレッドプログラミング相談室 その7at TECH
マルチスレッドプログラミング相談室 その7 - 暇つぶし2ch898:デフォルトの名無しさん
09/09/13 17:20:42
IntelのTBBってどうですか
使える? これから主流になる?

899:デフォルトの名無しさん
09/09/13 17:28:52
一部はC++0xに取り込まれるので、やっておいて損はないと思う。

900:デフォルトの名無しさん
09/09/13 17:35:48
>>898
TBB使ったアルゴリズムが100%正しいのか
検証する手段がないから危険で使えないよ?



901:デフォルトの名無しさん
09/09/13 17:42:44
原子的に、って訳は正直どうかと思う

902:デフォルトの名無しさん
09/09/13 18:51:04
>>896

URLリンク(www.nagi.org)


903:デフォルトの名無しさん
09/09/13 18:55:38
原子的に

quark的に

904:デフォルトの名無しさん
09/09/13 19:40:00
不可分的に

905:デフォルトの名無しさん
09/09/13 21:07:54
結局、ここの連中は自分じゃコードが書けない
知ったかばっかりなんだな

906:デフォルトの名無しさん
09/09/13 21:14:41
>>905
まず金を払え
話はそれからだ

907:デフォルトの名無しさん
09/09/13 21:31:47
>>906

馬鹿らしいが相手にしてやると
サンプルコードも書けない奴に先払いするやつなんていない。

slealing bitsってどういう意味だ?
せめてこれの意味くらいきっちり説明してみろ。

全然わかってねえじゃねえか、このスレの連中w


908:デフォルトの名無しさん
09/09/13 21:58:35
>>907
キミってその解ってないと卑下する連中と同列なんじゃないの?
ちなみに、煽れば回答でてくると思ってるでしょ?



909:デフォルトの名無しさん
09/09/13 22:15:16
>>907

キミってこんなのも書けないの?
template<typename T>
bool compareAndSet(T* const expPtr, T* const newPtr, const uint32_t expStamp, const uint32_t newStamp)
{
bool r = false;
if(v == expPtr && s == expStamp) {
TAS.lock();
if(v == expPtr && s == expStamp) {
v = newPtr;
s = newStamp;
r = true;
}
TAS.unlock();
}
return r;
}


TASぐらい実装できるよね?そこまでバカじゃないよね?
Javaの実装とVCかgccのcompareAndSwapのインラインアセンブラ
組み合わせれば実装ぐらいできるでしょ?それもできないってレベル低すぎるでしょ?

キミだめだわ



910:デフォルトの名無しさん
09/09/13 22:47:13
えーとだな、
そもそもの質問はArtOfMultiProcessor本の
Lock-Free Queueの実装なんで

おお威張りでlock()使われると
失笑するしかないんだがなw

君は本当の馬鹿なんだね


911:デフォルトの名無しさん
09/09/13 22:51:26
>>ちなみに、煽れば回答でてくると思ってるでしょ?

902に回答出てるじゃん。

できる人は出し惜しみしないで公開してるし回答もできるだろう。

ここに張りついてる連中は揚げ足とりばっかで
質問の本質も理解できない知ったかばっか


912:デフォルトの名無しさん
09/09/13 22:53:20
>>887で終わってんのに何で続いてんの?

>誰も64ビット版ではstealing bits、
>32ビット版ではindirectionの意味も語らず、
当たり前すぎて説明する必要があるとも思わんわ。

64ビットではポインタのビットから一部拝借してスタンプに使う。
32ビットではポインタとスタンプをまとめて直接ではなく、
ペアの領域を作成してそのポインタで間接的にCASを行う。


913:デフォルトの名無しさん
09/09/13 23:08:05
>>912
uint64_t expV = ((((uint64_t)expPtr) << 32) | ((uint64_t)expStamp));

uint64_t newV = ((((uint64_t)newPtr) << 32) | ((uint64_t)newStamp));

return (expV == CAS64(&ptr, expV, newV));

これでOK?

914:デフォルトの名無しさん
09/09/14 00:17:59
>> 887で終わってんのに何で続いてんの?

909みたいなのが質問者を馬鹿にしたんで荒れたんじゃないの。
lock使ってCASを実装するような奴が威張り散らしてるのみて爆笑させてもらったよ。
いずれにしても知ったかが多いのが明らかになったのはよかったんじゃない。


>>912

当り前すぎたとしても、質問者みたいな初心者もいるから最初から説明してあげれば。


915:デフォルトの名無しさん
09/09/14 00:39:43
どう見ても、キミが質問者で
煽って回答を引き出してるだけに見えるけど。

週末だしね。

916:デフォルトの名無しさん
09/09/14 00:56:51
>>913
uint64_t expV = ((((uint64_t)&expPtr) << 32) | ((uint64_t)expStamp));

uint64_t newV = ((((uint64_t)&newPtr) << 32) | ((uint64_t)newStamp));


917:デフォルトの名無しさん
09/09/14 01:00:27
>>894
>>908
>>909
>>915

煽ってる同一人物なんで
無視の方向で


918:デフォルトの名無しさん
09/09/14 04:16:34
火元の人
 やり方が理解できない質問者
 俺に分からないならこのスレにも理解できる奴いないんじゃね、とか思っていて、
 それが態度にも滲み出ている

煽る人
 分かってるつもりだけど分かってないで煽り続ける
 こいつを見た火元は「やっぱり分かってる奴いないんじゃないか」と思いこむ

住人タイプA
 一目で分かるがお前の態度が気に入らないしコード示すのマンドクセ
 つーかこの説明で分かれボユゲ

住人タイプB
 みんな何言ってんだかわかんね


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch