stdthread相关内容

C++ std::vector 的独立 std::threads

我正在构建一个实时软件,其中我在 main() 和用于读取和处理数据的线程上有一个主要的无限循环. 其中一个问题是保持运行线程的 std::vector 以向它们发送信号并监视执行.所以我把这段代码放在一起: #include #include #include #include #include 命名空间 readerThread {无效开始(int id){而 (1){ ..
发布时间:2021-12-21 13:55:09 C/C++开发

如何检查 std::thread 是否仍在运行?

如何检查 std::thread 是否仍在运行(以独立于平台的方式)?它缺少 timed_join() 方法,而 joinable() 并不适用于此. 我想过在线程中用std::lock_guard锁定一个互斥锁,并使用互斥锁的try_lock()方法来判断它是否仍然被锁定(线程正在运行),但对我来说似乎不必要地复杂. 你知道更优雅的方法吗? 更新: 明确地说:我想检查线程是否干 ..
发布时间:2021-12-06 11:39:43 C/C++开发

std::thread 通过引用调用复制构造函数

好吧,我在使用 std::thread 将数据传递到线程时遇到了问题.我以为我了解复制构造函数等的一般语义,但似乎我不太明白这个问题.我有一个名为 Log 的简单类,它因此隐藏了它的复制构造函数: 类日志{民众:Log(const char filename[], const bool outputToConsole = false);虚拟〜日志(无效);//修改行为void appendStr ..
发布时间:2021-12-06 11:36:46 C/C++开发

当 main() 退出时,分离的线程会发生什么?

假设我正在启动一个 std::thread 然后 detach() 它,所以即使 std::thread 曾经代表它,超出了范围. 进一步假设程序没有可靠的加入分离线程的协议1,所以当main()退出时分离线程仍然运行. 我在标准中找不到任何内容(更准确地说,在 N3797 C++14 草案中),它描述了应该发生的情况,1.10 和 30.3 都没有包含相关的措辞. 1 另一个可 ..
发布时间:2021-12-06 11:16:21 C/C++开发

在 std::thread 创建的线程中调用 pthread_sigmask 是一个好习惯吗?

1) 我是 std::thread 的新手,我想知道调用 pthread_sigmask() 以阻止特定 中的某些信号是否是一个好习惯strong> 由 std::thread 创建的线程. 我不希望新线程接收SIGTERM、SIGHUP等信号,因为主进程已经为这些信号安装了处理程序. 那么,调用 pthread_sigmask() 来阻塞由 std::thread 创建的线程中的一些 ..
发布时间:2021-06-23 18:35:59 C/C++开发

std :: thread增加DLL引用计数,从而防止DLL的卸载

我有一个Windows c ++ dll,该文件由第三方程序加载.我最近添加了一个线程池(这个 https://github.com/progschj/ThreadPool/blob/master/ThreadPool.h ). 但是,当第三方程序不再需要该dll时,该dll将不再被卸载.原因是线程池中产生的每个线程都会将dll引用计数增加一.一个问题是我不知道第三方程序何时不再需要该dll ..
发布时间:2021-05-02 18:51:20 C/C++开发

可以在C ++ 11中检索线程函数的返回值吗?

如果一个函数具有非无效的返回值,而我使用 .join 函数将其加入,那么有什么方法可以检索它的返回值? 这是一个简化的示例: float myfunc(int k){返回exp(k);}int main(){std :: thread th = std :: thread(myfunc,10);th.join();//返回值在哪里?} 解决方案 您可以按照以下示例代码从线程获取返回 ..
发布时间:2021-04-20 18:39:38 C/C++开发

使用clr和std :: thread

我正在为台式机创建UI抽象层.现在,我正在实现.NET框架的功能.令人讨厌的事情是,如果我让用户在Visual Studio中创建CLR Windows窗体应用程序,则他们将无法使用所有标准库,例如 std :: thread ,并且如果我让他们创建另一种类型的应用程序,,控制台就会显示出来. 是否可以将 clr 与 std :: thread 一起使用,或者甚至更好的是,有一种方法可以防止 ..
发布时间:2021-04-01 20:13:20 C#/.NET

在装有dlopen的库中使用std :: thread会导致sigsev

我最近发现使用std::thread和dlopen的奇怪行为. 基本上,当我在使用dlopen加载的库中执行std::thread时,会收到一个sigsev.库本身与pthread链接,而调用dlopen的可执行文件则不是. 一旦我将可执行文件链接到pthread或库本身,一切正常.但是,我们使用的是基于插件的基础结构,在该基础结构中,我们不知道应用程序本身是否与pthread链接在一 ..
发布时间:2020-11-15 23:57:06 C/C++开发

创建可变数量的std :: threads

我有一个线程程序,必须在多台计算机上运行。它们每个都有不同数量的受支持线程。在我开发程序的计算机中,有4个线程,因此我对要创建的4个线程进行了硬编码。我想使这种情况因情况而异。我想使用std :: thread :: hardware_concurrency来获取线程数,并将工作划分为可用的线程数。这可能吗 ? 创建的硬编码线程是: // const无符号int SIZE = std ..
发布时间:2020-09-28 00:23:05 C/C++开发

在C ++中创建未初始化的std :: thread时出现错误C2280

我想在我的类/结构中创建一个线程对象,但是不想在声明期间立即初始化。 Intead希望稍后再做。因此,如下面的代码片段所示,我收到了此编译错误。我该如何解决? 错误C2280:'std :: thread :: thread(const std :: thread&)':尝试 引用已删除的函数 我观察到导致此错误的行是: std :: thread t2; ..
发布时间:2020-09-28 00:13:19 C/C++开发