欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux多線程環(huán)境下 關(guān)于進(jìn)程線程終止函數(shù)總結(jié)

 更新時間:2017年01月05日 08:44:36   投稿:jingxian  
下面小編就為大家?guī)硪黄狶inux多線程環(huán)境下 關(guān)于進(jìn)程線程終止函數(shù)總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

pthread_kill:

pthread_kill與kill有區(qū)別,是向線程發(fā)送signal。,大部分signal的默認(rèn)動作是終止進(jìn)程的運行,所以,我們才要用signal()去抓信號并加上處理函數(shù)。

int pthread_kill(pthread_t thread, int sig);

向指定ID的線程發(fā)送sig信號,如果線程代碼內(nèi)不做處理,則按照信號默認(rèn)的行為影響整個進(jìn)程,也就是說,如果你給一個線程發(fā)送了SIGQUIT,但線程卻沒有實現(xiàn)signal處理函數(shù),則整個進(jìn)程退出。

pthread_kill(threadid, SIGKILL)殺死整個進(jìn)程。 如果要獲得正確的行為,就需要在線程內(nèi)實現(xiàn)signal(SIGKILL,sig_handler)。所以,如果int sig的參數(shù)不是0,那一定要清楚到底要干什么,而且一定要實現(xiàn)線程的信號處理函數(shù),否則,就會影響整個進(jìn)程。

如果int sig是0呢,這是一個保留信號,一個作用是用來判斷線程是不是還活著。pthread_kill的返回值: 成功:0 線程不存在:ESRCH 信號不合法:EINVAL

代碼:

int kill_rc = pthread_kill(thread_id,0);

if(kill_rc == ESRCH) 
    printf("the specified thread did not exists or already quit\n"); 

else if(kill_rc == EINVAL) 
    printf("signal is invalid\n"); 
else 
    printf("the specified thread is alive\n");
 

pthread_cancel

函數(shù)原型:

int pthread_cancel(pthread_t thread);

向thread發(fā)送一個取消執(zhí)行的請求。如果成功則返回0,否則為非0值。發(fā)送成功并不意味著thread會終止。成功返回零,出錯返回非零的出錯碼ESRCH:沒有找到thread指定ID的線程。

abort和exit的比較

exit會做一些釋放工作:釋放所有的靜態(tài)的全局的對象,緩存,關(guān)掉所有的I/O通道,然后終止程序。如果有函數(shù)通過atexit來注冊,還會按照atexit的相反順序調(diào)用注冊的函數(shù)。不過,如果atexit函數(shù)扔出異常的話,就會直接調(diào)用terminate。

abort:立刻terminate程序,沒有任何清理工作。

這里附上線程基本函數(shù):

----------------------------------------------------------------
     POSIX函數(shù)                              描述
----------------------------------------------------------------
     pthread_create                    創(chuàng)建一個線程
     pthread_self                      找出自己的線程ID
     pthread_equal                     測試2個線程ID是否相等
     pthread_detach                    設(shè)置線程以釋放資源
     pthread_join                      等待一個線程
     pthread_cancel                    終止另一個線程
     pthread_exit                      退出線程,而不退出進(jìn)程
     pthread_kill                      向線程發(fā)送一個信號
---------------------------------------------------------------

以上就是小編為大家?guī)淼腖inux多線程環(huán)境下 關(guān)于進(jìn)程線程終止函數(shù)總結(jié)全部內(nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

  • linux中把.c的文件編譯成.so文件

    linux中把.c的文件編譯成.so文件

    這篇文章主要介紹了linux中把.c的文件編譯成.so文件的相關(guān)資料,本文以編譯mylib.c為例講如何編譯.so文件,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • linux userdel 命令的使用

    linux userdel 命令的使用

    這篇文章主要介紹了linux userdel 命令的使用,幫助大家更好的理解和使用Linux系統(tǒng),感興趣的朋友可以了解下
    2020-08-08
  • 關(guān)于安裝LNMP集成包后上傳圖片報500錯誤的解決方法

    關(guān)于安裝LNMP集成包后上傳圖片報500錯誤的解決方法

    這篇文章主要給大家介紹了關(guān)于安裝LNMP集成包后上傳圖片報500錯誤的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • Ubuntu環(huán)境安裝Anaconda3完整步驟

    Ubuntu環(huán)境安裝Anaconda3完整步驟

    大家好,本篇文章主要講的是Ubuntu環(huán)境安裝Anaconda3完整步驟,感興趣的同學(xué)快來看一看吧,對你有幫助的話記得收藏一下哦
    2021-11-11
  • apache無法啟動的可能原因分析及對策

    apache無法啟動的可能原因分析及對策

    在遇到apache無法啟動時,可以參照如下可能的原因進(jìn)行分析與解決,有類似情況的朋友可以參考下哈
    2013-05-05
  • Linux中進(jìn)程在后臺可靠運行的方法總結(jié)

    Linux中進(jìn)程在后臺可靠運行的方法總結(jié)

    本篇文章主要給大家介紹了Linux中進(jìn)程在后臺可靠運行的方法以及示例代碼分析,一起學(xué)習(xí)參考下吧。
    2017-12-12
  • centos 7 安裝配置方法圖文教程

    centos 7 安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了centos 7 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • vsftpd用戶禁止ssh登陸的實現(xiàn)方法

    vsftpd用戶禁止ssh登陸的實現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于vsftpd用戶禁止ssh登陸的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • linux中ftp服務(wù)搭建需要注意的地方

    linux中ftp服務(wù)搭建需要注意的地方

    本篇文章給大家總結(jié)了linux中ftp服務(wù)搭建需要注意的地方,大家學(xué)習(xí)后能夠少走很多彎路,一起參考下吧。
    2018-03-03
  • linux系統(tǒng)AutoFs自動掛載服務(wù)安裝配置

    linux系統(tǒng)AutoFs自動掛載服務(wù)安裝配置

    大家好,本篇文章主要講的是linux系統(tǒng)AutoFs自動掛載服務(wù)安裝配置,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下哦,方便下次瀏覽
    2021-12-12

最新評論