[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