首页 > TAG信息列表 > stdthread
c – 在linux上学习线程
Linux对我来说是一个新平台.我已经在Windows上用c编码了很多年,并且已经熟悉该平台上的多线程. 当我需要在linux平台上学习c时,C 11就出现了. Linux似乎在大多数情况下使用pthreads – 好吧还有boost :: threads和QT也有自己的线程.但是随着C 11出现了std :: thread,一种全新的(跨c – 在多个线程中使用std :: cout
我在c 11编写了一个简单的程序来测试Thread,但是std :: cout并没有像我期望的那样工作. class Printer { public: void exec() { mutex m; m.lock(); cout<<"Hello "<<this_thread::get_id()<<endl; chrono::milliseconds duration(通过引用传递对象到C 11中的std :: thread
为什么在创建std :: thread时不能通过引用传递对象? 例如,以下snippit给出了编译错误: #include <iostream> #include <thread> using namespace std; static void SimpleThread(int& a) // compile error //static void SimpleThread(int a) // OK { cout << __PRETTY_c – 我什么时候应该使用std :: thread :: detach?
有时我必须使用std :: thread来加速我的应用程序.我也知道join()等待一个线程完成.这很容易理解,但调用detach()和不调用它有什么区别? 我认为没有detach(),线程的方法将独立使用线程. 不分离: void Someclass::Somefunction() { //... std::thread t([ ] { printfc – 为什么std :: condition_variable作为类成员导致std :: thread的编译错误?
我尝试将std :: condition_variable作为类成员包含在内,并且在将此类的对象传递给std :: thread时会遇到很多编译错误.我从我的实际程序中删除了所有其他代码,最后得到了以下最小代码.删除std :: condition_variable不会导致任何问题.我尝试在构造函数中“初始化”变量,并使其内联,c – 等待std :: thread完成
我试图在程序终止时优雅地清理,所以我在std :: thread上调用join()来等待它完成.这似乎只是永远阻止主线程,但我不明白为什么,因为工作线程是一个(几乎)空循环,如下所示: void GameLoop::Run() { while (run) { // Do stuff... } std::cout << "Endinc – 使用std :: hash()(std :: this_thread :: get_id())
我正在努力让一个C应用程序在Windows和Linux中进行编译,在我发现的一些调试过程中 std::this_thread::get_id().hash() 不能在使用gcc 4.8的Linux上编译(感谢此thread中的注释).建议的解决方法是使用: std::hash<std::thread::id>()(std::this_thread::get_id()) 有谁知道这些是c 11 std :: thread和class friend函数之间的交互
我无法理解编译器错误我正在尝试使用声明为c 11 std :: thread对象中的类的朋友的函数.我创建了一个小例子来展示我遇到的问题.基本上,当编译器只看到aa的友元函数原型时,当该函数传递给线程对象时,它会抛出一个未定义的符号错误.我正在使用g 4.9.2. //test.cpp #include <thread>如何使用std :: thread C生成多个调用相同函数的线程
基本上我想要做的是编写一个生成多个线程的for循环.线程必须多次调用某个函数.换句话说,我需要每个线程在不同的对象上调用相同的函数.我怎么能用std :: thread c库做到这一点?解决方法:您可以简单地在循环中创建线程,每次传递不同的参数.在此示例中,它们存储在向量中,以便稍后可以