国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

pthread 線程立即取消的兩種方法

2019-11-09 20:20:49
字體:
來源:轉載
供稿:網友

1.相關函數介紹 a.

int pthread_cancel(pthread_t thread)

發送終止信號給thread線程,如果成功則返回0,否則為非0值。發送成功并不意味著thread會終止。

b.

int pthread_setcancelstate(int state, int *oldstate)

設置本線程對Cancel信號的反應,state有兩種值:PTHREAD_CANCEL_ENABLE(缺省)和PTHREAD_CANCEL_DISABLE, 分別表示收到信號后設為CANCLED狀態和忽略CANCEL信號繼續運行;old_state如果不為NULL則存入原來的Cancel狀態以便恢復。

c.

int pthread_setcanceltype(int type, int *oldtype)

設置本線程取消動作的執行時機,type由兩種取值:PTHREAD_CANCEL_DEFFERED和PTHREAD_CANCEL_ASYCHRONOUS,僅當Cancel狀態為Enable時有效,分別表示收到信號后繼續運行至下一個取消點再退出和立即執行取消動作(退出);oldtype如果不為NULL則存入運來的取消動作類型值。

d.

void pthread_testcancel(void)

是說pthread_testcancel在不包含取消點,但是又需要取消點的地方創建一個取消點,以便在一個沒有包含取消點的執行代碼線程中響應取消請求. 線程取消功能處于啟用狀態且取消狀態設置為延遲狀態時,pthread_testcancel()函數有效。 如果在取消功能處處于禁用狀態下調用pthread_testcancel(),則該函數不起作用。 請務必僅在線程取消線程操作安全的序列中插入pthread_testcancel()。除通過pthread_testcancel()調用以編程方式建立的取消點意外,pthread標準還指定了幾個取消點。測試退出點,就是測試cancel信號.

e.

int pthread_join(pthread_t thread, void **value_ptr);

thread:等待退出線程的線程號。 value_ptr:退出線程的返回值。

1.同步取消線程 代碼示例:

#include<stdio.h> #include<stdlib.h> #include <pthread.h> void *thread_fun(void *arg) { int i=1; pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); /*同步取消,等到下一個取消點再取消*/ pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL); 2.異步取消線程 示例代碼:

#include<stdio.h> #include<stdlib.h> #include <pthread.h> void *thread_fun(void *arg) { int i=1; pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); /*同步取消,等到下一個取消點再取消*/// pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL); /*異步取消, 線程接到取消信號后,立即退出*/ pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); printf("thread start /n"); while(1) { i++; } return (void *)0; } int main() { void *ret=NULL; int iret=0; pthread_t tid; pthread_create(&tid,NULL,thread_fun,NULL); sleep(1); pthread_cancel(tid);//取消線程 pthread_join(tid, &ret); printf("thread 3 exit code %d/n", (int)ret); return 0; }

代碼編譯:

gcc pthread_test.c -o pthread_test -lpthread
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昭觉县| 汝州市| 陵水| 怀仁县| 双江| 疏附县| 页游| 互助| 昭平县| 鄂尔多斯市| 会同县| 铁力市| 叶城县| 瓮安县| 张北县| 朝阳县| 浦东新区| 卢湾区| 鄂伦春自治旗| 辉南县| 宾阳县| 苏尼特右旗| 华安县| 张掖市| 洪湖市| 攀枝花市| 启东市| 微山县| 克拉玛依市| 德清县| 江永县| 永川市| 乐至县| 翁源县| 广河县| 黄平县| 赤水市| 报价| 全南县| 孟州市| 江门市|