草庐IT

Multithreading

全部标签

c++ - 在 Windows 10 上使用 C++ 线程的问题(使用 g++ 作为编译器)

我正在尝试创建一个线程并让它向终端打印一些内容。我遇到了一些问题,所以我决定采用别人制作的这段非常简单的代码,当我编译它时,我得到了下面列出的错误,但网上的其他人似乎没有问题运行它。#include#includeusingnamespacestd;voidhello_world(){cout编译器(mingw32-gcc-g++-bin8.2.0.3onwindows10)给出以下错误:.\multiT.cpp:Infunction'intmain()':.\multiT.cpp:13:5:error:'thread'wasnotdeclaredinthisscopethreadth

c++ - 新版本的 g++ 的多线程性能下降?

我写了一些C++反向传播代码,我在Ubuntu18.04的i9-9900K上运行。我看到的问题是,使用较新版本的g++,我的多线程性能越来越差。随着新的g++版本,单线程基准测试得到了预期的改进:g++4.8:5437cycles/sg++5.5:5929cycles/sg++6.5:5932cycles/sg++7.4:6117cycles/sg++8.3:6921cycles/s多线程基准测试(8核上14个pthreads)随着新版本显着下降:g++4.8:25456cycles/sg++5.5:17212cycles/sg++6.5:18616cycles/sg++7.4:170

c++ - 使用 QNetworkAccessManager.get,我如何决定中止?

我正在尝试使用QTQNetworkAccessManager类来管理多线程C++/QT应用程序中的一些下载。在workerthread上(编辑:除了下载之外,线程由于其他原因是分开的),我想访问外部服务器并准备好接收结果使用代码:...m_nam=newQNetworkAccessManager(this);QNetworkReply*reply=m_nam->get(request);connect(m_nam,SIGNAL(finished(QNetworkReply*)),this,SIGNAL(finished(QNetworkReply*)));...但我可能会决定,在下载完

c++ - 使用ACE时有没有办法使用线程局部变量?

我正在使用ACE线程并且需要每个线程都有自己的int成员。这可能吗? 最佳答案 ACE称之为“线程特定存储”。检查一下:ACE_TSS.这就是我所知道的全部,很抱歉不能提供更多帮助。thread-localstorage的维基百科页面说也有一种pthreads方法可以做到这一点。 关于c++-使用ACE时有没有办法使用线程局部变量?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/

c++ - 游戏引擎的线程模型

我有兴趣在业余时间开发我正在开发的小型引擎,但我很好奇最好的方法是什么。我很好奇将物理线程与引擎的其余部分同步的推荐方法,类似于ThisGuy.我正在使用BulletPhysicsSDK,它已经使用了他所描述的数据复制方法,但我想知道,一旦bullet通过一个模拟然后将数据同步回其他线程,它不会导致类似垂直同步,渲染线程在处理数据的一半时突然开始使用一组更新的不同信息?这是观众能够注意到的东西吗?如果要销毁的物体出现某种爆炸怎么办?如果这是一个问题,那么解决它的最佳方法是什么?锁定物理线程,使其在渲染线程(以及基本上所有其他线程)完成其帧之前无法执行任何操作?这似乎会浪费一些CPU时间

C++ 套接字 Send() 线程安全

我正在为最多1000个客户端编写套接字服务器,服务器是关于我的游戏,我使用非阻塞套接字和大约10个同时从不同套接字接收数据的线程(第一个线程从0-100接收,第二个从101-200等等..)但是如果线程1要向所有1000个客户端发送数据,线程2也想同时向所有1000个客户端发送数据,这样安全吗?数据是否有可能在另一方(客户端)被弄乱?如果是,我想唯一可能发生的问题是有时客户端会收到2个或10个数据包作为1个数据包,对吗?如果是,是否有任何解决方案:( 最佳答案 处理多个套接字的通常模式是使用专用线程轮询I/O事件select(2),

c++ - pthread-win32 扩展 sem_post_multiple

我目前正在围绕pthreads构建一个薄的C++包装器供内部使用。Windows和QNX都是目标,幸运的是pthreads-win32端口似乎工作得很好,而QNX符合我们实际目的的POSIX。现在,在实现信号量时,我点击了函数sem_post_multiple(sem_t*,int)这显然只在pthreads-win32上可用,但在QNX中缺失。顾名思义,该函数应该通过作为第二个参数给出的计数来增加信号量。据我所知,该函数既不是POSIX1b也不是POSIX1c的一部分。虽然目前对上述功能没有要求,但我仍然想知道为什么pthreads-win32提供该功能以及它是否有用。我可以尝试使用

c++ - Boost 的无序容器对于读取来说是线程安全的吗?

例如,对于MSVC,read-onlyisthread-safeoncontainers.对于只读,boost是否同样是线程安全的?更新:即,我们能否期望“const”方法保证多线程使用不会损坏内存。 最佳答案 即将发布的标准定义了所有标准的线程安全容器,如果提升,我会感到非常惊讶实现不符合此保证。特别是,你应该能够从容器的任何实例中读取任何线程,只要没有线程正在修改容器。 关于c++-Boost的无序容器对于读取来说是线程安全的吗?,我们在StackOverflow上找到一个类似的问题

c++ - Qt 和 boost 线程本地存储的限制

我对QThreadStorage和boost的thread_specific_ptr有以下问题:1)Qthreadstorage中可以存储的对象数量有限制吗?我遇到了一个关于256个QThreadStorage对象的qt查询,所以想澄清一下这个限制指向什么?2)QThreadStorage是否只能与QThreads一起使用?3)boosttls有什么限制吗?4)我有一个用例,我想在所有线程完成进一步处理时对tls进行操作并将数据同步到主线程。我写了下面的代码,想检查下面的代码是否正常。#include#include#includeboost::mutexmutex1;intglob=

c++ - 选项卡之间的 IE BHO c++ 数据共享

我希望我的IE扩展的BHO实例能够共享公共(public)数据。我只需要他们共享几个变量,所以我试图找到一个简单的问题解决方案。我能想到的备选方案,从简单到复杂是:1)向/从文件系统或注册表写入/读取数据,参见MSDNarticle和Codeprojectarticle.问题:是否可以从运行在不同线程中的BHO实例访问此信息?2)开发与所有BHO实例通信的Windows服务或后台应用程序,参见MSDNarticle.问题:我不知道怎么做,也不知道从哪里开始。我担心用户必须安装很多东西。3)提供IPC机制,使不同的BHO实例可以直接相互通信。就像使用IGlobalInterfaceTab