UNIX環境高級編程學習之第十一章線程-線程的創建、退出、等待、取消、分離
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <pthread.h> void* thread_fun(void* arg) // 線程執行函數1 { printf("fun:hello world!/n"); return (void*)1; } void* thread_fun2(void* arg) // 線程執行函數2 { printf("fun 2:tid = %ul/n", pthread_self()); // pthread_self() 調用當前線程ID pthread_exit((void*) 2); // 線程退出 } void* thread_fun3(void* arg) // 線程執行函數3 { while (1) { printf("fun 3:tid = %ul/n", pthread_self()); sleep(5); } return (void*)3; } int main(int argc, char* argv[]) { const int n = 3; int i, ret; void* tret; pthread_t tid[n]; ret = pthread_create(&tid[0], NULL, thread_fun, NULL); // 線程創建 if (ret != 0) { printf("pthread_create 0 Error/n"); } ret = pthread_create(&tid[1], NULL, thread_fun2, NULL); // 線程創建 if (ret != 0) { printf("pthread_create 1 Error/n"); } ret = pthread_create(&tid[2], NULL, thread_fun3, NULL); // 線程創建 if (ret != 0) { printf("pthread_create 2 Error/n"); } ret = pthread_detach(tid[2]);// 線程分離, 線程分離後,底層資源立即回收,再用pthread_join取狀態會報錯。 if (ret != 0) { printf("pthread_cancel Error/n"); } ret = pthread_cancel(tid[2]);// 線程取消 if (ret != 0) { printf("pthread_cancel Error/n"); } for (i = 0;i < n;i++) { ret = pthread_join(tid[i], &tret); // 取線程退出狀態 if (ret != 0) { printf("%d. pthread id:%ul, pthread_join Error!/n", i, tid[i]); }else{ printf("%d. pthread id:%ul, pthread_fun return value:%d /n", i, tid[i], (int)tret); } } sleep(15); return 0; }
一、幾個基本概念 tty(Teletypewriter) 來源於“電傳打印機”,Linux系統中則是終端設備的統稱,同時也代指操作系統中支持終端設備的tty子系統。 console(控制檯)
BusyBox是一個遵循GPL協議、以自由軟件形式發行的應用程序。 Busybox在單一的可執行文件中提供了精簡的Unix工具集,可運行於多款POSIX環境的操作系統,例如Linux(包括Android)、Hurd、FreeBSD等等。 由
1-前言 本文根據實際遇到的線程池使用導致的性能問題,從代碼層面解析 線程池 核心線程數、最大線程數、工作隊列三個參數配置不佳容易產生的問題,以及對這些問題的建議 對線程池的更多解析,這篇文章講得已經比較詳細了,建議大家仔細研讀:《阿里規
爲了更好地分類閱讀 52im.net 總計 1000 多篇精編文章,我將在每週三推送新的一期技術文集,本次是第 3 期。 第 1 篇 [標題] 高性能網絡編程 (一):單臺服務器併發 TCP 連接數到底可以有多少 [鏈接] http:
正常運行結束 程序運行結束,線程自動結束。 使用退出標誌退出線程 一般 run()方法執行完,線程就會正常結束,但是,有些線程是伺服線程。它們需要長時間的運行,只有在外部某些條件滿足的情況下,才能關閉這些線程。使用一個變量來控制循環
家人們,不鋪墊了,直接說重點。網易雲信 IM 計費套餐上新了! IM 即時通訊最低只需 899 元/月,低至全行業頭部廠商最低價! (後有附表,有理有據) 新購或新切換 IM 新套餐的用戶(除IM標準版外),每月還將獲得免費贈送的
繼承 Thread 類 Thread 類本質上是實現了 Runnable 接口的一個實例,代表一個線程的實例。 啓動線程的唯一方法就是通過 Thread 類的 start()實例方法。 start()方法是一個 native 方法,它將
JSON簡介: JSON(Java Script Object Notation)是一種輕量級的數據交換格式,通常用於在不同系統之間傳輸數據。它基於 JavaScript 對象語法,但已成爲一種獨立於語言的格式。JSON 數據以鍵值對的形式
一、簡單介紹: CaffeineCache和Guava的Cache是應用廣泛的本地緩存。 在開發中,爲了達到降低依賴、提高訪問速度的目的。會使用它存儲一些維表接口的返回值和數據庫查詢結果,在有些場景下也會在分佈式緩存上再加上一層本地緩存,
作者:vivo 互聯網大前端團隊 - Ma Lian 本文主要描述了FileProvider,startAnyWhere實現,Parcel不對稱漏洞以及這三者結合產生的漏洞利用實戰,另外闡述了漏洞利用的影響和修復預防措施,這個漏洞波及了
本文分享自華爲雲社區《GaussDB SQL基本語法示例-CASE表達式》,作者:Gauss松鼠會小助手2。 一、前言 SQL是用於訪問和處理數據庫的標準計算機語言。GaussDB支持SQL標準(默認支持SQL2、SQL3和SQL4的主要
Impala目前支持Hadoop中幾種常見的文件格式 Parquet 、 ORC 、 Text 、 Avro 、 RCFile 和 SequenceFile 。下面簡要說明各種格式的使用、限制和一些注意事項。 不同的文件格式有着不同的適用場
本文分享自華爲雲社區《GaussDB SQL基礎語法示例-BOOLEAN表達式》,作者:Gauss松鼠會小助手2。 一、前言 SQL是用於訪問和處理數據庫的標準計算機語言。GaussDB支持的SQL標準(默認支持SQL2、SQL3和SQL
Map是用於保存具有映射關係的數據集合,它具有雙列存儲的特點,即一次必須添加兩個元素,即一組鍵值對<Key,Value>,其中Key的值不可重複(當Key的值重複的時候,後面插入的對象會將之前插入的具有相同的Key值的對象覆蓋掉),Valu
這幾年,我在跨境電商經歷了業務快速發展的黃金時期,也遇到了一些令人“出乎意料”的事故。 最嚴重的一次宕機,直接導致技術組織調整和一位技術大牛的離開,公司也賠了十幾萬;甚至半年後還有銷售經理和我抱怨說:“如果那一天系統不出問題,訂單量肯定會創