1樓:空雪夢見
你引數是通過指標的方法送進去的?然後結果每個執行緒要讀資料的時候資料已經不是送入時候的資料了嗎
送執行緒引數的時候,為每個執行緒分配一個新的空間來儲存這個「引數」。
例如你原來是
int a = 10;
a = 20;
現在要int a = 10;
int *p = new int;
*p = a;
_beginthreadex(0, 0, threadfunc, p, 0, 0);
p = new int;
a = 20;
*p = a;
_beginthreadex(0, 0, threadfunc, p, 0, 0);
記住執行緒函式退出前要delete掉這個引數p
2樓:匿名使用者
這個方法a是否可以做到執行緒安全?即互不干擾執行?
否則加鎖,感覺起不到併發的作用。
另外,如果這個方法的確無法做到執行緒安全,建議也只是臨界區加鎖,即存在衝突的那一段**加鎖,否則影響效率。
c++多執行緒問題
3樓:匿名使用者
建立執行緒的方法: 1.使用c++標準庫(c++標準庫現已開始支援多執行緒) 2.使用第三方庫(boost), 3.使用windows api.
4樓:匿名使用者
你不覺得你的兩個執行緒是一樣的,你只需要寫一個,然後這樣呼叫
handle hthread1;
handle hthread2;
//建立執行緒
hthread1=createthread(null,0,fun1proc,null,0,null);
hthread2=createthread(null,0,fun1proc,null,0,null);
closehandle(hthread1);
closehandle(hthread2);
這兩個執行緒是跑在不同空間,使用相同的**空間。
建立執行緒有很多方式,但是本質都是呼叫
unsigned long _beginthread( void( __cdecl *start_address )(
void * ), unsigned stack_size, void *arglist
);unsigned long _beginthreadex( void *security, unsigned
stack_size, unsigned ( __stdcall *start_address )(
void * ), void *arglist, unsigned initflag, unsigned
*thrdaddr );
c++多執行緒程式設計問題
5樓:匿名使用者
如果兩個執行緒能同時執行,那麼效能可以提高一半,這裡有個前提條件:你的程式執行時被分配兩個cpu核心,並且執行過程中沒有意外的中斷。在實際的環境中,作業系統的程序數和執行緒數總是多於cpu核心的數量,你不能保證程式的每次執行總能獲得合適的cpu數以及執行過程中不會被中斷,也許某一次的執行是所有執行緒依次執行。
對於c++03/98來說,由於語言本身並不直接支援多執行緒,所以只能使用第三方執行緒庫或者直接使用作業系統api,某些第三方執行緒庫並不能提供足夠的併發能力,使用api 由於核心模式切換導致執行緒的效能低下。
6樓:匿名使用者
多執行緒和單執行緒的執行效率問題。不是單純從某一個角度考慮,還需要兼顧其他方面。比如要依賴實際開發中的問題和場景,甚至還要依賴硬體水平(單核還是多核)、軟體水平(多執行緒實現原則)。
樓主可參考這篇文章的介紹:
7樓:重新整理①丅
是的,理論上兩個執行緒同時工作要比一個執行緒高出將近一倍的效率的。
但其實現在多執行緒程式設計往往並不是用來提高效率的,打個比方如果你寫過ui,你應該就會經常使用多執行緒程式設計來預防介面假死;如果你做過網路程式設計,你會發現多執行緒的主要目的是用來監聽/接受訊息...在這些地方多執行緒的主要目的並不是為了提高效率。
8樓:
多執行緒工作可以提高解決問題的速度
你舉得例子可以多執行緒實現,但是更多的人稱之為分散式計算多執行緒主要是建立多個執行緒,每個執行緒負責自己的事情,每個執行緒只對主執行緒負責
至於解決問題的速度應該可以達到提高一半,但是你要注意資源的互斥,互斥處理不好估計會事倍功半
9樓:匿名使用者
是的,多執行緒的一個重要應用就是平行計算
易語言怎樣運用多執行緒,易語言怎樣運用多執行緒?求解答
哥們我教你 很簡單 執行緒就是後臺執行的一直執行 和時鐘不一樣 使用是規定時間重複執行一次 而執行緒是不斷的 有一些處理實際 就可以拋到執行緒後臺處理 你去凡窩技術論壇看看有沒有教程吧 易語言怎樣運用多執行緒?求解答 例如執行以下 程式會自動退出。子程式 按鈕1 被單擊 啟動執行緒 多執行緒子程式,...
C執行緒問題
不需要很安全的話 設定form類的checkforillegalcrossthreadcalls屬性為false 這個東西的話在vs2005裡面預設不允許由子執行緒呼叫主線,2003裡面是預設允許的 所以很多事例 都是2003版本,用2005編譯會報錯 先刪掉msdn原文,難找,礙事 補充 如果只是...
多執行緒中Semaphore,mutex和lock的區別
mutex互斥體只用於保護臨界區的 訪問共享資源 而不用於鎖之間的同步,即一內 個執行緒釋放容mutex鎖後,馬上又可能獲取同一個鎖,而不管其它正在等待該mutex鎖的其它執行緒。semaphore訊號量除了起到保護臨界區的作用外,還用於鎖同步的功能,即一個執行緒釋放semaphore後,會保證正在...