thread h VC 執行緒總結1

2021-08-31 21:39:49 字數 2354 閱讀 9667

在建立乙個thread例項以後,提供了以下幾個函式介面:

detach();//detach therad

意思是在構造thread之後,可以該執行緒與例項分離,然後即使在該變數被收回之後仍然能執行該執行緒

void detach()

get_id(); return id for this thread

inline thread::id thread::get_id() const _noexcept

join();等待前乙個執行緒執行完之後才執行

inline void thread::join()

joinable();//判斷該執行緒是否是可執行執行緒

bool joinable() const _noexcept

看看巨集定義:

#define _thr_is_null(thr) (thr._id == 0)
可以發現joinable就是返回id是否是等於0,如果等於0,就返回為false,即認為該執行緒不可執行

可以看到id是thread類裡面宣告的乙個類,找到id的定義

class thread::id

templatebasic_ostream<_ch, _tr>& _to_text(

basic_ostream<_ch, _tr>& _str)

size_t hash() const

private:

id(const thread& _thrd)

: _thr(_thrd._thr)

id(_thrd_t _thrd)

: _thr(_thrd)

_thrd_t _thr;

friend thread::id thread::get_id() const _noexcept;

friend thread::id this_thread::get_id() _noexcept;

friend bool operator==(thread::id _left, thread::id _right) _noexcept;

friend bool operator<(thread::id _left, thread::id _right) _noexcept;

};

繼續追蹤,巨集定義

#define _thr_set_null(thr) (thr._id = 0)
可以發現,其在構造時就是為0,也就是任何乙個id,沒做任何操作之前就是0.

hardware_concurrency();//這是乙個靜態成員函式,返回硬體執行緒上下文的數量,檢測硬體的併發特性

static unsigned int hardware_concurrency() _noexcept

swap(thread& _other);//交換兩個執行緒的狀態

void swap(thread& _other) _noexcept

templateinline

void swap(_ty& _left, _ty& _right)

_noexcept_op(is_nothrow_move_constructible<_ty>::value

&& is_nothrow_move_assignable<_ty>::value)

還有乙個native_handle();就是返回它的handle,暫時沒發現它的作用

下面寫了乙個小demo,可以供大家看一下

#include "stdafx.h"

#include "iostream"

#include "thread"

void show_num(int i)

int _tmain(int argc, _tchar* argv)

); std::cout<<"id:"

if (t_in.joinable())

auto t_handle=t_in.native_handle();

} std::thread t(show_num,5);

t.detach();

std::thread t1(show_num,5);

t1.swap(t);

if (t.joinable())

if (t1.joinable())

//getchar();

return 0;

}

Java學習總結1 多執行緒程式設計

一 建立執行緒的方法一 繼承 extends thread 重寫run 方法 舉個栗子?public class mythread extends thread 傳遞name表示執行緒名字 public mythread string name override public void run sy...

Linux 執行緒 1 執行緒概述

程式是應用程式作為乙個靜態檔案儲存在計算機系統的硬碟等儲存空間中,而程序則是處於動態條件下由作業系統維護的系統資源管理實體,也就是程式的動態執行過程。執行緒按照排程者可分為使用者級執行緒和核心級執行緒。使用者級執行緒 主要解決上下文切換問題,它的排程演算法和排程過程全部由使用者自行決定,執行不需要核...

執行緒1 執行緒常用方法

1 執行緒方法 1 start 啟動執行緒,並進入就緒狀態,隨時等待執行 2 run 重寫的方法,開始執行執行緒 3 currentthread 呼叫當前執行緒 4 getname 獲取執行緒名字 5 setname 設定執行緒名字 6 yield 呼叫此方法的執行緒,釋放當前cpu的執行權,cpu...