執行緒同步之lock鎖
在framework中已經為我們提供了三個加鎖的機制,分別是
monitor類
lock關鍵字
mutex類
都是鎖定資料或是鎖定被呼叫的函式。
mutex則多用於鎖定多執行緒間的同步呼叫。簡單的說,monitor和lock多用於鎖定被呼叫端,而mutex則多用鎖定呼叫端。
monitor和lock將**段標記為臨界區,其實現原理是首先鎖定某一私有物件,然後執行**段中的語句,當**段中的語句執行完畢後,再解除鎖。
-----------------lock結構
private object obj = new object();//定義一私有物件
//……其它**
lock(this)
例如:
lock(this)
", str, system.datetime.now.millisecond.tostring());
thread.sleep(50);
}
----------------lock舉例(控制台程式)
下面程式中有兩個執行緒thread1、thread2和乙個testfunc函式,testfunc會列印出呼叫它的執行緒名和呼叫的時間(mm級的),兩個執行緒分別以30mm和100mm來呼叫testfunc這個函式。testfunc執行的時間為50mm。
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading;
using system.threading.tasks;
namespace 執行緒同步
///---
public program()
/// /// ---啟動執行緒
///
public void runthread()
/// /// ---執行緒1
///
private void thread1func()
}/// /// ---執行緒2
///
private void thread2func()
}/// /// ---呼叫函式
///
///
private void testfunc(string str)
", str, system.datetime.now.millisecond.tostring());
thread.sleep(50);}}
/// /// ---殺死執行緒
///
private void closethread()
if (thread2.isalive)}}
}
輸出結果(不同計算機上,結果可能不同):
JAVA學習開發之多執行緒問題
1.程序 每乙個程式都是乙個程序,程序包含乙個程式所需要的所有資源 2.執行緒 用來執行 的工具 3.主線程 乙個程序最少要包含的執行緒 main 程式會自動呼叫主線程的 4.子執行緒 通過主線程開啟的執行緒 執行緒的表現出形式 1.繼承thread類,並重寫run 方法,類似於主線程的main方法...
c 之多執行緒
1.對多執行緒的呼叫用到頭檔案 1.1中的操縱函式 pthread create pthread t tidp,constpthread attr t attr,void start rtn void void arg 第乙個引數為指向執行緒 識別符號的 指標。第二個引數用來設定執行緒屬性。第三個引...
QT開發之多執行緒
在linux中我們經常使用多執行緒程式設計,同時就會提出同步和非同步操作.像原子變數,訊號量,阻塞,自旋鎖,互斥所等,在qt中也有類似的概念,但是在我的開發中用的不是很多,下面列舉一下多執行緒程式設計的基礎.新建乙個gui應用專案,注釋的非常詳細.建立執行緒後,啟動執行緒預設是run函式,除非有特殊...