執行緒標識和建立 Linux C C

2021-09-10 06:55:02 字數 1358 閱讀 5283

程序id在整個系統中是唯一的,但執行緒id只在它所屬的程序環境中有效。

執行緒id用pthread_t資料型別表示,所以可移植的作業系統實現不能把它作為整數來處理,因此必須使用函式來對兩個執行緒id進行比較

int pthread_equal(pthread_t tid1, pthread_t tid2);

//引數:兩個執行緒的執行緒id

//返回值:相等則返回非0值,否則返回0

執行緒也可以通過呼叫pthread_self函式獲得自身執行緒id

pthread_t pthread_self(void);

//返回值:呼叫執行緒的執行緒id

當執行緒需要識別以執行緒id作為標識的資料結構時,pthread_self函式可以與pthread_equal函式一起使用。

應用:比如:主線程可能把工作任務放在乙個佇列中,用執行緒id來控制每個工作執行緒處理哪些作業,每個執行緒並不是任地處理從佇列頂端取出的作業,每個工作執行緒只能移出標有自己執行緒id的作業。

可以使用pthread_create函式建立新執行緒。

int pthread_create(

pthread_t *thread, //返回執行緒id

const pthread_attr_t *attr, //設定執行緒的屬性,null為預設屬性

void *(*start_routine)(void*), //縣城啟動後要執行的函式

void *arg); //傳給執行緒啟動函式的引數

//返回值:成功返回0,失敗返回錯誤碼

注意:

pthread_create和pthread_self的用法:

#include#include#includevoid* route(void*)

int main()

sleep(1); //讓主線程休眠一秒鐘,sleep函式的標頭檔案是unistd.h

例子:

#include#include#includeusing namespace std;

void print(const char* s)

void* route(void* )

int main()

print("main thread: ");

sleep(1);

return 0;

}

注意:

執行緒控制代碼和執行緒標識

handle的引用計數和有關的屬性,handle是os標識程序和執行緒的東西,但是使用者也可以用這個來標識程序和執行緒,對其操作 createthread api 用於建立執行緒。api 返回同時執行緒控制代碼,並通過引數得到執行緒識別符號 id 執行緒控制代碼有完全訪問權建立執行緒物件。執行執行緒...

執行緒停止 標識位

package com.qiliang.demo06 標誌位停止執行緒 1.建議執行緒正常停止,利用次數,不建議死迴圈 2.建議使用標誌位,設定乙個標誌位 3.不要使用stop或者destroy等過時的方法或jdk不建議使用的方法 public class stopthreadtest implem...

執行緒 建立執行緒

重寫run public void run 例項化物件 類名 t new 類名 設定屬性 名字,優先順序 優先順序是1 10的整數,1最小,預設是5 優先順序越高,該執行緒占用cpu的時間 機會 越多。id是自動生成 t.setname 執行緒1 t.setpriority 4 啟動執行緒,預設呼叫...