问题标签 [stdthread]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
214 浏览

c++ - 无法理解 std::thread 用法

我正在阅读有关 c++11 多线程的文档,并在std::thread.

代码:

我不明白threads[i] = std::thread(thread_task, i + 1);。是std::thread静态函数调用,并返回 std::thread 对象的引用吗?听起来不可思议,但似乎是代码所说的。

因为我会这样写:

谢谢。

0 投票
2 回答
39369 浏览

c++ - 满足条件时告诉 std::thread 杀死/停止自身

假设我有一个工作线程,它在构造tWorker时初始化并告诉它执行,直到为真。An , , 锁定一些数据 ( ) 以便在他处理它时拥有它。Bosswork()bRetiredstd::mutexmtxvFilestWorker

我如何让tWorker“自杀”bRetired变成一次truemutex当线程停止执行时将如何销毁?

我读过std::thread对象不能以任何方式被打断。让线程什么都不做(或调用std::this_thread::yield())是否提供与杀死线程相同的效果?

笔记

  • 工作线程一旦退役就无法再次启动。
  • 工作线程在后台工作,不会中断主线程的执行。
0 投票
1 回答
802 浏览

c++ - 无法将类成员函数传递给另一个函数(std::thread::thread)

看看这两个代码。

下面的代码工作正常。

此代码引发错误:

错误:

0 投票
5 回答
65185 浏览

c++ - 在 C++11 中设置 std::thread 优先级的便携式方法

后 C++11 世界中设置 std::thread 实例优先级的正确方法是什么

是否有一种至少在 Windows 和 POSIX (Linux) 环境中有效的可移植方式?

还是获取句柄并使用可用于特定操作系统的任何本机调用的问题?

0 投票
3 回答
527 浏览

c++ - 如果我在 Linux 上有 Pthread 代码,在 std::thread 中实现相同的代码是否有优势?

我正在做一个小型大学项目,我将不同的多线程方法应用于模式匹配算法(pthread,omp)并将它们与它们各自的顺序实现进行比较。

目前它运行良好,并且根据算法和 gcc 优化,我的运行时间缩短了大约 2 - 3 倍。

现在,我也想使用 std::thread 来完成它,但是,根据我设法收集的信息,它们是在 Linux 上使用 Pthreads 实现的,所以我想知道这是否有任何意义。

0 投票
3 回答
2352 浏览

windows - mingw std::thread 与 Windows API

到目前为止,我开始使用 C++11 std::thread(mingw 4.8) 非常好。我遇到了一种 I/O 重叠的情况,sleepEx用于将线程置于警报等待状态。这工作得很好,直到QueueUserAPC不得不使用它,它返回一个“无效的句柄错误”。

经过一番搜索,发现std::thread使用了 Windows 下的 pthread 库。

有什么方法可以使用期望线程句柄的 Windows API 调用std::thread?或者我是否需要坚持使用 Windows 线程来进行重叠 I/O?

0 投票
3 回答
25907 浏览

c++ - 如何在 C++ 中将 std::thread::id 转换为字符串?

如何std::thread::id在 C++ 中将类型转换为字符串?我正在尝试将生成的输出类型转换 std::this_thread::get_id()为字符串或字符数组。

0 投票
3 回答
10984 浏览

c++ - 如何使用 std::thread C++ 生成多个调用相同函数的线程

基本上我想做的是编写一个生成多个线程的 for 循环。线程必须多次调用某个函数。所以换句话说,我需要每个线程在不同的对象上调用相同的函数。如何使用 std::thread c++ 库做到这一点?

0 投票
3 回答
665 浏览

multithreading - C++ 11 std::thread 奇怪的行为

我正在对 std::thread 和 C++11 进行一些试验,但遇到了奇怪的行为。请看下面的代码:

这里的主要思想是我想指定一些进行独立计算的线程(在这种情况下,是简单的增量)。在所有线程完成后,应合并结果以获得整体结果。

澄清一下:这仅用于测试目的,以便让我了解 C++11 线程是如何工作的。

但是,在使用命令编译此代码时

在 Ubuntu 机器上,当我执行生成的二进制文件时,我得到了非常奇怪的行为。例如:

(应该产生输出:4000)

(应该产生输出:400000)

有人知道这里发生了什么吗?

先感谢您!

0 投票
1 回答
612 浏览

c++ - std::thread 并在 opengl 应用程序中使用 std::cin 输入

我在 OpenGL 应用程序中使用线程为用户提供外壳。

我的问题是我无法在主循环结束时取消线程,因为 std::thread 没有提供取消方法,并且我的线程被std::cin >> var调用阻塞,所以我不能使用布尔值来存储线程应该停止的事实。

我想知道是否有在线程中使用 std::cin 的好方法(std::thread)或替代解决方案。