Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

gccでInterlockedIncrement

タグ: C++ gcc

Win32 SDKの InterlockedIncrement() みたいなものはgccには用意されていないのだろうかと探してみたら、 boost/detail/atomic_count_gcc.hpp で使われているのを見つけた。

忘れないうちにメモ。

#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 2))
# include <ext/atomicity.h>
#else
# include <bits/atomicity.h>
#endif

#if defined(__GLIBCXX__) // g++ 3.4+
using __gnu_cxx::__atomic_add;
using __gnu_cxx::__exchange_and_add;
#endif

int main(int argc, char** argv)
{
	_Atomic_word val = 10;
	
	// 値を増減させる
	__atomic_add(&val, 2);
	// val == 12

	// 値を増減させて、増減させる前の値を返す	
	_Atomic_word old = __exchange_and_add(&val, -4);
	// val == 8
	// old == 12
スポンサーサイト

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://idlysphere.blog66.fc2.com/tb.php/12-b9feb6f4
この記事にトラックバックする(FC2ブログユーザー)

Appendix

タグ

Blog内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。