[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends-ml 12634] Re: 議事録「 Java 並列処理プログラミング 」を読む会(第 9 回)
高橋(智)です。
"TAKAHASHI,Toru" wrote:
snip
> アトミックな変数のライブラリJava以外は?
> → WindowsはAPIあるらしい
> InterlockedIncrement
> InterlockedCompareExchange
> InterlockedExchange
> :
> → UNIX系 なさそう? (宿題)
前のメールで書きましたが、
Windows APIには、
http://msdn2.microsoft.com/en-us/library/ms683614.aspx
などにありますように InterlockedIncrement や InterlockedCompareExchange などのAPIがあります。
MacOSX での Atomicな関数 ( Load-Link/Store-Conditional )としては、
http://www.cocoabuilder.com/archive/message/cocoa/2002/6/23/56690
などで紹介されているように IncrementAtomic や CompareAndSwap のような関数が公開されています。
次に、Solaris では、
http://docs.sun.com/app/docs/doc/816-5168/6mbb3hr3n?a=view
http://docs.sun.com/app/docs/doc/816-5168/6mbb3hr2m?a=view
などで紹介されているように atomic_inc_32 や atomic_cas_32 のような関数が公開されています。
環境は、OS:Solaris10 CPU:SPARCx2 Compiler:SunSutdio11(CC) Debugger:dbx IDE:BorlandC++2005
で試しました。
コードは以下のようなもので、コンパイル時に -xarch=v9 を指定しました。
------------------------------------
#include <iostream>
#include <atomic.h>
int main( int argc, char * argv[] )
{
volatile uint32_t x = 99;
atomic_inc_32(&x);
std::cout << x << std::endl;
return 0;
}
------------------------------------
で、SolarisのDeguggerのdbxでatomic_inc_32にステップインしようとしましたが、入り方が
分かりませんでした。添付の画像しかありません。なので、機械語でどのようになっているのか
確認できませんでした。(^^;
次は、Linuxですね。。。
--
高橋智宏
Java読書会( http://www.javareading.com/bof/ )
Content-Type: Text/Plain; charset=iso-2022-jp
The size (255541bytes) exceeds the limit.
If you need original, Please send the line below to ppserv@xxxxxxxxxxxxxxxx,
get jfriends-ml 12634
--jfriends-ml-request@xxxxxxxxxxxxxxxx