虽然std::thread 对象本身没有返回值,但你可以使用 std::future 和std::promise 来安全地获取线程函数的返回值。 std::promise 用于设置线程函数的返回值。 std::future 用于获取线程函数的返回值。你可以在线程函数内部创建一个 std::promise 对象,并通过它来设置返回值。然后,你可以将 std::promise 对象的 ge...
std::thread的简单返回值可以通过使用std::thread::get_id()函数来获取。这个函数返回一个表示线程ID的无符号整数,它是线程创建时自动生成的。 以下是一个简单的示例: 代码语言:cpp 复制 #include<iostream>#include<thread>voidprint_thread_id(){std::thread::id thread_id=std::this_thread::get_id(...
//promise的使用,多线程中的函数所使用的参数需要其他线程返回//1.子线程使用主线程传入的值#include<thread>#include<future>#include<iostream>voidtask(/*std::future<int> i*/std::promise<int>& i){std::this_thread::sleep_for(std::chrono::seconds(1));std::cout<< i.get_future().get();//...
}intsum(int&x,int&y){ std::cout << std::hex << std::this_thread::get_id() << std::endl; std::this_thread::sleep_for(std::chrono::seconds(1));returnx + y; }intsums(intx,inty,intz){ std::cout << std::hex << std::this_thread::get_id() << std::endl; std::this...
对于win32 线程,我有直接的 GetExitCodeThread() 这给了我线程函数返回的值。我正在为 std::thread (或增强线程)寻找类似的东西 据我了解,这可以通过期货来完成,但究竟如何? 原文由 shoosh 发布,翻译遵循 CC BY-SA 4.0 许可协议 c++multithreading
对于类成员函数、lambda表达式或其他可调用对象就无能为力了,因此,C++11推出了std::function与std::...
没有什么能保证std::thread::hardware_concurrency会被并行算法调用(AFAICT至少在libstdc中不会)。因此,...
1.将函数的返回值设置为输出参数 2.使⽤lambda表达式获取函数返回值 点击查看代码 3.使⽤std::future、std::promise和packaged_task std::async和std::future的使⽤ std::async()与std::thread()最明显的不同就是async只是创建异步任务,不⼀定创建线程。async()默认创建线程,可以设置第⼀个参数来决定...
对于win32 线程,我有直接的 GetExitCodeThread() 这给了我线程函数返回的值。我正在为 std::thread (或增强线程)寻找类似的东西 据我了解,这可以通过期货来完成,但究竟如何? 原文由 shoosh 发布,翻译遵循 CC BY-SA 4.0 许可协议 c++multithreading
在C++中,std::thread是一个表示可执行线程的类。std::thread的简单返回值可以通过使用std::thread::get_id()函数来获取。这个函数返回一个表示线程ID的无符号整数,它是线程创建时自动生成的。 以下是一个简单的示例: 代码语言:cpp 复制 #include<iostream>#include<thread>voidprint_thread_id(){std::thre...