linux執行緒同步

2021-06-22 06:59:26 字數 855 閱讀 3497

首先介紹幾個linux執行緒同步需要的函式:

pthread_mutex_lock();

pthread_mutex_unlock();

pthread_cond_wait();

pthread_cond_signal();

下面使用乙個例子介紹上面幾個函式的用法。在主線程接受使用者輸入資訊,在子執行緒中輸入使用者輸入的資訊。

#include #include #include pthread_mutex_t  mutex=pthread_mutex_initializer;

pthread_cond_t cond =pthread_cond_initializer;

pthread_t pid;

int flag = 0;

char buf[1024];

void *print(void* arg)

pthread_cond_signal(&cond);

pthread_mutex_unlock(&mutex);

}}int main()

}

編譯方法:

# gcc -lpthread  test.c

pthread_mutex_lock這個函式是獲取互斥量。在這個執行緒沒有執行pthread_mutex_unlock時,那麼其他執行緒執行pthread_mutex_lock就會被阻塞。

pthread_cond_wait這個函式是將當前執行緒阻塞,並且釋放互斥量。

pthread_mutex_signal函式是通知呼叫了pthread_cond_wait的函式,讓它脫離阻塞,並且呼叫了pthread_cond_wait的執行緒將會重新獲取互斥鎖。

linux 執行緒 執行緒同步

因為執行緒獨自擁有的只有棧,其他的區域執行緒共同擁有。並且對共享區域的操作並不都是原子的。對共享區域的操作順序又是不確定的。就像建立兩個檔案描述符同時指向 同一檔案,並且連續向檔案中寫入那麼寫的東西可能是亂七八糟的。這時就需要執行緒對共享區的同步。而另一種情況是,多個執行緒的指令執行順序需要同步。這...

Linux執行緒同步

1.概要 執行緒的同步,發生在多個執行緒共享相同記憶體的時候,這時,要保證每個執行緒在每個時刻看到的共享資料是一致的。如果每個執行緒使用的變數都是其他執行緒不會使用的 read write 或者變數是唯讀的,就不存在一致性問題。但是,如果兩個或兩個以上的執行緒可以read write乙個變數時,就需...

Linux執行緒同步

1.概要 執行緒的同步,發生在多個執行緒共享相同記憶體的時候,這時,要保證每個執行緒在每個時刻看到的共享資料是一致的。如果每個執行緒使用的變數都是其他執行緒不會使用的 read write 或者變數是唯讀的,就不存在一致性問題。但是,如果兩個或兩個以上的執行緒可以read write乙個變數時,就需...