程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> pthread並行計算互斥鎖的使用

pthread並行計算互斥鎖的使用

編輯:C++入門知識

pthread並行計算互斥鎖的使用


由於pthread實現並行計算的方式是基於共享內存的,因此在多線程中共享變量的使用存在諸多同步性問題。在多個線程中對同一個變量進行讀的時候可能沒問題,但是在修改的時候,就有可能造成變量內容的不一致。為了解決這個問題,就需要對共享變量進行互斥的訪問。

為了實現這一功能,在pthread中提供了線程鎖,通過加鎖和解鎖就可以輕松避免上述問題,具體實例如下:

#include
#include
#include
#include

using namespace std;

vector vec;
pthread_mutex_t mutex;

int thread_count;
void *hello(void* a)
{  
  int aa = (int)a;
  pthread_mutex_lock(&mutex);     //加鎖
  vec.push_back(aa);
  pthread_mutex_unlock(&mutex);   //解鎖
     
}

int main()
{
  pthread_t threads[4];  
  thread_count = 4;
  pthread_mutex_init(&mutex,NULL);
  for(int thread = 0;thread> thread_count;
  for(int i=0;i::iterator it;
  for(it=vec.begin();it!=vec.end();it++)  //print the result
     cout<<*it<
在上述代碼中實現了使用多線程向vector添加元素,並在主線程中打印出來。需要說明的是,如果在hello中如果不使用互斥鎖,程序運行將出現錯誤。可能是pthread內部對多線程進行了限制,以避免出現類似錯誤。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved