執行緒 互斥鎖

2021-06-02 12:00:21 字數 1708 閱讀 4332

#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 執行緒二需要...