・・・という問題があったので、mutexを使って排他制御をする。まずはグローバルに
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
とmutexを宣言して、pthread_mutex_lock()とpthread_mutex_unlock()を追加するだけ。超簡単。
void func(void) { int i, tmp; for(i=0; i<5; i++){ pthread_mutex_lock(&mutex); tmp = res; usleep(1); res = tmp + 1; pthread_mutex_unlock(&mutex); } }
実行結果は
end: res=25
無事期待通り。