在剛開始學習學習執行緒同步時總是認為兩個執行緒或是多個執行緒共同執行,但是那樣是做的。
同步就是協同步調,按預定的先後次序進行執行。如:你說完,我再說。 「同」字從字面上容易理解為一起動作。 其實不是,「同」字應是指協同、協助、互相配合。 如程序、執行緒同步,可理解為程序或執行緒a和b一塊配合,a執行到一定程度時要依靠b的某個結果,於是停下來,示意b執行;b依言執行,再將結果給a;a再繼續操作。 所謂同步,就是在發出乙個功能呼叫時,在沒有得到結果之前,該呼叫就不返回,同時其它執行緒也不能呼叫這個方法。
接下來用乙個簡單的例子演示通過互斥量進行的執行緒的同步,演示的思想為乙個執行緒對資料操作,另乙個資料輸出結果。
**如下:
#include
#include
#include
#include
#include
pthread_mutex_t mutex = pthread_mutex_initializer;//定義互斥變數並初始化
int lock_var;
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);
printf("++++++++++++++++++++++\n");
} }
乙個例子了解apacheBench的簡單使用方法
apachebench,即ab,apache http server benchmarking tool,是apache提供的衡量http伺服器效能的乙個簡單的小工具,用來對apache伺服器進行壓力測試,主要的衡量指標就是伺服器每秒能夠處理請求的數目,同時支援併發請求。下面舉個例子來分析ab 執行...
Linux執行緒同步(一)之使用互斥量(互斥鎖)
當多個控制線程共享相同的記憶體時,需要確保每個執行緒看到一致的資料檢視。如果每個執行緒使用的變數都是其他執行緒不會讀取或修改的,那麼就不存在一致性問題。同樣地,如果變數是唯讀的,多個執行緒同時讀取該量也不會有一致性問題。但是,當某個執行緒可以修改變數,而其他執行緒也可以讀取或者修改這個變數的時候,就...
乙個簡單的例子了解async跟defer
當我們要在頁面當中引入指令碼的時候,一般用的是script標籤 i.e.複製 把script放body尾的話有個缺點就是要等dom載入好了才會去載入並執行script指令碼。前面開頭的時候說過獲取 載入指令碼內容不會阻塞,只有執行指令碼內容的時候才會阻塞!如果能在載入dom的同時載入script指令...