如何獲得執行緒的返回值?

2021-06-27 00:23:20 字數 716 閱讀 1221

最近在學習多執行緒程式設計技術過程中,遇到乙個問題:如何獲取執行緒的返回值?

執行緒定義之初:uint class::thread(lpvoid lpparam)

開啟執行緒:cwinthread *hthread = afxbeginthread(thread, lpparam, 0, 0, null);

獲得執行緒返回值bresult的方法有兩個:

1、通過 全域性變數

執行緒函式的定義中bresult為全域性變數,直接訪問bresult就可以獲得執行緒函式的返回值,並結合執行緒函式的定義判斷執行緒退出時的狀態。

2、通過 api 函式

函式: getexitcodethread()

功能: 獲取乙個結束執行緒的返回值

函式原形: bool getexitcodethread( handle hthread,  lpdword lpexitcode);

引數: hthread 指向欲獲取返回值的執行緒物件的控制代碼

lpexitcode 用於儲存執行緒的返回值

返回值:函式執行成功則返回非0值,否則返回 0(false)

值得注意的是:呼叫該函式獲得的返回值 lpexitcode = bresult,除非執行緒函式定義之初能夠通過 bresult 判斷執行緒的完成度,否則不能通過 lpexitcode  

的值對執行緒的狀態做出判斷。那麼,能否通過getexitcodethread()函式的返回值對執行緒的狀態做出判斷哪? 當然這也是不行的。

python獲得子執行緒的返回值

import sys import threading import queue q queue.queue def worker1 x,y func name sys.getframe f code.co name print s run func name q.put x y,func name...

python獲得子執行緒的返回值

import sys import threading import queue q queue.queue defworker1 x,y func name sys.getframe f code.co name print s run func name q.put x y,func name ...

如何實現處理執行緒的返回值

方法一 myrunnable類 子執行緒,預設value為null,等待3s之後改變其值 public class myrunnable implements runnable catch interruptedexception e value libai public string getval...