#include
#include
#include
#include
#include
//1.靜態初始化,當動態初始化時,遮蔽靜態初始化
//pthread_mutex_t mutex = pthread_mutex_initializer;
//2.動態初始化
pthread_mutex_t mutex;
int lock_var = 0;
time_t end_time;
void pthread1(void *arg);
void pthread2(void *arg);
int main(int argc, char *argv)
void pthread1(void *arg)
else//以下為臨界區
printf("pthread1:pthread1 lock the variable\n");
for(i=0;i<2;i++)
//以上臨界區
if(pthread_mutex_unlock(&mutex)!=0)
else
printf("pthread1:pthread1 unlock the variable\n");
sleep(1);}}
void pthread2(void *arg)
else
printf("pthread2:pthread2 got lock.the variable is %d\n",lock_var);
if(pthread_mutex_unlock(&mutex)!=0)
else
printf("pthread2:pthread2 unlock the variable\n");
}sleep(3);}}
執行:lsb@ubuntu:~/gx/wangluo$ gcc -o mutex mutex.c -lpthread
lsb@ubuntu:~/gx/wangluo$ ./mutex
pthread1:pthread1 lock the variable
pthread2:the variable is locked by pthread1
pthread1:pthread1 unlock the variable
pthread2:pthread2 got lock.the variable is 2
pthread2:pthread2 unlock the variable
pthread1:pthread1 lock the variable
pthread1:pthread1 unlock the variable
pthread2:pthread2 got lock.the variable is 4
pthread2:pthread2 unlock the variable
pthread1:pthread1 lock the variable
pthread1:pthread1 unlock the variable
pthread2:pthread2 got lock.the variable is 6
pthread2:pthread2 unlock the variable
pthread1:pthread1 lock the variable
pthread1:pthread1 unlock the variable
執行緒互斥鎖
執行緒互斥鎖 降低效率,保證資料安全 執行緒 資料共享 修改共享資料,資料不安全 from threading import thread,lock import time n 100 deftask global n temp n time.sleep 0.1 n temp 1 if name m...
執行緒同步與互斥 互斥鎖
在多工作業系統中,同時執行的多個任務可能都需要使用同一種資源。這個過程有點類似於,公司部門裡,我在使用著印表機列印東西的同時 還沒有列印完 別人剛好也在此刻使用印表機列印東西,如果不做任何處理的話,列印出來的東西肯定是錯亂的。下面我們用程式模擬一下這個過程,執行緒一需要列印 hello 執行緒二需要...
執行緒同步與互斥 互斥鎖
在多工作業系統中,同時執行的多個任務可能都需要使用同一種資源。這個過程有點類似於,公司部門裡,我在使用著印表機列印東西的同時 還沒有列印完 別人剛好也在此刻使用印表機列印東西,如果不做任何處理的話,列印出來的東西肯定是錯亂的。下面我們用程式模擬一下這個過程,執行緒一需要列印 hello 執行緒二需要...