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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 19:26:16 ]
マルチスレッドプログラミングについて語るスレ

■前スレ
マルチスレッドプログラミング相談室 その6
ttp://pc11.2ch.net/test/read.cgi/tech/1187008532/

■過去スレ
その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/

OS・言語・環境は問わないが、それゆえ明記すべし。
テンプレ

【OS】

【言語】

【実行環境】

【その他突起する事項】

892 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 12:01:27 ]
いいよ。>>890にツケとけ。

893 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 12:36:05 ]
みんな
ほんとにできんの?

64ビットと32ビットのアーキテクチャのアプローチの違いもいわず
ただ「オブジェクトつくって...」って
分かった気しただけで実装したことないんちゃうか
cmpxchg使うんだよ



894 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 12:46:12 ]
>>893
cmpxchg直接使うってバカか勉強中の学生以外
使わないと思うけど?

キミいくつなの?レベル低すぎなんだよね〜

895 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 14:31:59 ]
x86前提ならそもそも64ビットCAS命令がネイティブでなかったっけ?


896 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 17:11:34 ]
>>x86前提ならそもそも64ビットCAS命令がネイティブでなかったっけ?

元の質問読んだ?
DCASっぽい動きをCAS命令でやるのってどうやるのって話。


誰も64ビット版ではstealing bits、
32ビット版ではindirectionの意味も語らず、
厨房よばわりしてるけど
誰も原著を読み込んでないし実装もできないじゃないか

>>cmpxchg直接使うってバカか勉強中の学生以外
>>使わないと思うけど?
>>キミいくつなの?レベル低すぎなんだよね〜

ようするに出来ないんだろ


897 名前:デフォルトの名無しさん [2009/09/13(日) 17:19:40 ]
>>894

このメソッド、
x86の32ビットと64ビットの両アーキテクチャ上で
Cで実装してみ?
cmpxchg使わないでw



public boolean compareAndSet(V expectedReference,
V newReference,
boolean expectedMark,
boolean newMark)

「現在の参照 == 予想される参照」であり、現在のマークが予想されるマークに等しい場合、参照およびマークの値を指定された更新値に原子的に設定します。

パラメータ:
expectedReference - 参照の予想される値
newReference - 参照の新しい値
expectedMark - マークの予想される値
newMark - マークの新しい値
戻り値:
成功した場合は true



898 名前:デフォルトの名無しさん [2009/09/13(日) 17:20:42 ]
IntelのTBBってどうですか
使える? これから主流になる?

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

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





901 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 17:42:44 ]
原子的に、って訳は正直どうかと思う

902 名前:デフォルトの名無しさん [2009/09/13(日) 18:51:04 ]
>>896

つttp://www.nagi.org/diary/?date=20090614#p01


903 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 18:55:38 ]
原子的に

quark的に

904 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 19:40:00 ]
不可分的に

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

906 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 21:14:41 ]
>>905
まず金を払え
話はそれからだ

907 名前:デフォルトの名無しさん [2009/09/13(日) 21:31:47 ]
>>906

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

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

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


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



909 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん [2009/09/13(日) 22:47:13 ]
えーとだな、
そもそもの質問はArtOfMultiProcessor本の
Lock-Free Queueの実装なんで

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

君は本当の馬鹿なんだね




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

902に回答出てるじゃん。

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

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


912 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 22:53:20 ]
>>887で終わってんのに何で続いてんの?

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

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


913 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん [2009/09/14(月) 00:17:59 ]
>> 887で終わってんのに何で続いてんの?

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


>>912

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


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

週末だしね。

916 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/09/14(月) 01:00:27 ]
>>894
>>908
>>909
>>915

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


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

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

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

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






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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