http://0xcc.net/blog/archives/000128.html を見て、なんかこの手の命令はたいてい GCC 拡張にあるんだよなーとか思ってたらありました。 __sync_bool_compare_and_swap と __sync_val_compare_and_swap 。 #include <stdio.h> void once(void) { // int は atomic な読み書きが可能 static volatile int entered; // 最初は 0 int result; result = __sync_val_compare_and_swap(&entered, 0, 1); // cmpxchg になる if (result == 1) { // すでに入ったことがある場合は return; // すぐ出る } // 初回の場合のみ、何かを
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く