エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
スレッド間でカウンタを共有する – ビットログ
C言語では、複数のスレッドが共有する変数を単純にインクリメントすると期待通りの結果になりません。あ... C言語では、複数のスレッドが共有する変数を単純にインクリメントすると期待通りの結果になりません。あるいは簡単なテストでうまく動いたとしても、高負荷になるとおかしな結果を返します。この手のバグは再現条件を揃えること自体が難しいので、はじめから安全なコードを書けるように挙動を知っておくことが大事です。 まずうまくいかないサンプルコードがこちら。10個のスレッドを起こして、それぞれのスレッドが共有変数をナイーブに100万回カウントアップします。 #include <stdio.h> #include <pthread.h> void *func(void *i) { int j; for (j = 0; j < 1000000; j++) (*(int *)i)++; // <- counts up return NULL; } int main() { int n = 0, x = 0; pt