利用ACE管理執行緒

2021-06-01 19:58:41 字數 1881 閱讀 8783

我所接觸的ace中對執行緒操作的類主要有兩個,乙個是ace_thread,另乙個為ace_thread_manager

ace_thread能夠管理所有執行緒,只要你掌握有需要被管理的執行緒的id;ace_thread_manager的乙個物件能夠管理該物件所建立的執行緒。

建立乙個執行緒的函式有:

/*通過ace_thread類中的函式建立乙個執行緒

*createfunc為自己定義的乙個全域性函式原型為void createfunc(testtask* p)

*&test為執行緒函式需要傳入的引數testtask* p

*thr_new_lwp | thr_detached 指定執行緒的屬性,該執行緒屬於能夠自動釋放資源的那種,至於thr_new_lwp的含義,我想大概是指建立乙個輕量級執行緒的意思,可以參考一下

*最後用乙個變數nthreadid來接受被建立的執行緒的執行緒id

*/

ace_thread::spawn((ace_thr_func)createfunc,&test, thr_new_lwp | thr_detached,&nthreadid);

/*通過ace_thread_manager的物件建立執行緒,pthreadmanager為ace_thread_manager的乙個指標

*spawn函式的形參的意義都一樣

*thr_joinable

表示被建立的執行緒需要通過其他執行緒呼叫join方法來釋放資源,並可以通過pthreadmanager->join(nthreadid)來等待執行緒結束

*thr_suspended代表執行緒可以被掛起,但是並不是建立時傳入了該屬性的執行緒就能掛起,我的那個執行緒函式mythread::func就沒法被掛起,還望高手指點

*/

pthreadmanager->spawn((ace_thr_func)mythread::func,null, thr_new_lwp | thr_joinable | thr_inherit_sched|thr_suspended,&m_nthreadid)

**:#include "ace/thread.h"

#include "ace/thread_manager.h"

#include "ace/task.h"

#include "ace/reactor.h"

#include

using namespace std;

class mythread

long create()

int resume()

void stop()

ace_thread_t m_nthreadid;

};void createfunc(testtask* p) }

void joinfunc(testtask* p)

int main()

{testtask test;

ace_thread_t nthreadid = 0;

ace_thread::spawn((ace_thr_func)createfunc,&test, thr_new_lwp | thr_detached,&nthreadid);

ace_os::sleep(1);

cout<>a;

cout<

ACE執行緒管理機制 執行緒的建立與管理

有過在不同的作業系統下用c 進行過多執行緒程式設計的朋友對那些執行緒處理的api可能深有體會,這些api提供了相同或是相似的功能,但是它們的api的差別卻極為懸殊,十分令人頭痛。ace thread提供了對不同os的執行緒呼叫的簡單包裝,通過乙個通用的介面進行處理執行緒建立 掛起 取消和刪除等問題。...

ACE執行緒管理機制 執行緒的建立與管理

有過在不同的作業系統下用c 進行過多執行緒程式設計的朋友對那些執行緒處理的api可能深有體會,這些api提供了相同或是相似的功能,但是它們的api的差別卻極為懸殊,十分令人頭痛。ace thread提供了對不同os的執行緒呼叫的簡單包裝,通過乙個通用的介面進行處理執行緒建立 掛起 取消和刪除等問題。...

ACE執行緒管理機制 執行緒的建立與管理

有過在不同的作業系統下用c 進行過多執行緒程式設計的朋友對那些執行緒處理的api可能深有體會,這些api提供了相同或是相似的功能,但是它們的api的差別卻極為懸殊,十分令人頭痛。ace thread提供了對不同os的執行緒呼叫的簡單包裝,通過乙個通用的介面進行處理執行緒建立 掛起 取消和刪除等問題。...