草庐IT

多线段

全部标签

c++ - 多线程编程 C++

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我正在寻找一本关于C++多线程编程的好书/文章/引用。我发现很少有旧线程有一些建议。但是,它们中的大多数都使用Java。有谁知道C++中的任何东西?提前致谢。

c++ - 多线程 vector

我正在使用C++开发一个项目,该项目使用自己创建的map来存储数据-从这个意义上讲,map更像是“地理”map,因此是图像。有不同的线程读取和写入它。map的数据存储在整数vector的标准vector中。它的大小不会改变,只是通过getter和setter函数改变某些像素的内容。我的问题如下:有时一切正常,但更多时候我得到损坏的图像,因为像素值改变符号或变得与它们应该的值完全不同。这可能是对像素的线程读/写访问的问题,如果是这样,我应该使用什么来代替标准vector?我曾尝试使用互斥锁来确保只有一个线程读取或写入vector,但是这些读/写操作经常发生,如果我在每次操作时都锁定vec

c++ - 将多线程类重构为单线程+和多线程

我有一个以这种方式实现的多线程C++类:classMyClass{protected:somemutexmutex;void_unsafeMethod(){...};public:voidsafeMethod{lockerlock(mutex);_unsafeMethod();}}我对此很满意,但注意到在大多数情况下,多线程支持并不是真正必要的,所以我想将其分为两类:一个是线程安全的,一个是不安全的,但性能更高一个。问题是,有数千行代码使用该类,所以我需要保持接口(interface)相同。当然类名在定义中会发生变化,这取决于是否需要支持机器翻译。我想到了以下内容:解决方案Aclass

c++ - 我们如何在使用链表时使用多线程

我对多线程的概念相当陌生,正在探索一些有趣的问题以获得更好的想法。我的一个friend提出了以下建议:“拥有一个链表并执行常规的插入、搜索和删除操作是相当简单的。但是如果多个线程需要在同一个列表上工作,您将如何执行这些操作。最少需要多少锁。我们有多少锁才能优化链表功能?”考虑一下,我觉得一个锁就足够了。我们为每个单独的读写操作获取锁。我的意思是,当我们访问列表中的节点数据时,我们获得了锁。当我们插入/删除元素时,我们会为整个系列的步骤获取锁。但我无法想出使用更多锁来为我们提供更优化性能的方法。任何帮助/指示? 最佳答案 “每个列表一

C++ - 关于多线程的问题

我无法理解多线程的一些概念。我知道基本原理,但无法理解内核何时发送和使用各个线程。我知道拥有多个线程可以让代码并行运行。我认为这将是我的存档提取程序的一个很好的补充,它可以使用多核解压缩block。它在一个for循环中解压缩所有文件,我希望每个可用的内核都能处理一个文件。这是我的问题:我是否需要查询甚至考虑机器上的核心数,或者当线程运行时,它们会自动发送到空闲核心?谁能给我一个使用线程的for循环的例子。说在每个循环迭代中它会调用一个使用不同线程的函数。我读到要激活的理想线程数是核心数。我如何知道内核何时空闲,或者我是否应该检查它是否已加入主线程,并在它必须保持一定数量的线程运行时创建

c++ - OpenCV C++ 多线程

我在4个不同的Mat对象上调用了4x这个opencv图像处理函数。voidprocessBinary(Mat&binaryMat){//imageprocessing}我想对其进行多线程处理,以便所有4个方法调用同时完成,但让主线程等待每个线程完成。例如:intmain(){Matm1,m2,m3,m4;//performeachofthesemethodssimultaneously,buthavemainthreadwaitforallprocessBinary()callstofinishprocessBinary(m1);processBinary(m2);processBin

c++ - 从多线程使用 QuantLib 的正确方法是什么?

我无法找到任何明确描述QuantLib的线程安全属性(或缺少它们!)的文档。量化库configurationdocumentation列出了一些与线程安全相关的编译时选项,从中我推断,默认情况下,QuantLib并不完全是线程安全的。特别是,有:QL_ENABLE_SESSIONS-“如果已定义,单例将为不同的session返回不同的实例。您必须在命名空间QuantLib中提供并链接库一个sessionId()函数,为每个session返回不同的sessionID。未定义默认情况下。”QL_ENABLE_THREAD_SAFE_OBSERVER_PATTERN-“如果已定义,将使用观察

c++ - ROS AsyncSpinner 的多线程行为

我试图了解ROS中的AsyncSpinner是如何工作的,因为我可能误解了一些东西。大家可以找一个类似的问题here.如图所示here它的定义提到:Asynchronousspinner:spawnsacoupleofthreads(configurable)thatwillexecutecallbacksinparallelwhilenotblockingthethreadthatcalledit.Thestart/stopmethodallowstocontrolwhenthecallbacksstartbeingprocessedandwhenitshouldstop.而在官方文

c++ - C/C++ 中大型非稀疏非方矩阵的多线程乘法

全部,我正在寻找C或C++库(最好是开源库)的建议,这些库使用多线程技术来乘以大型非方形(例如,大小为65536xn,其中n-&& 最佳答案 英特尔MKL(非开源)AMDACML(免费,但不开源)GOTOBLAS(学术用途免费,IIRC,您可以获得源代码,但不是“开源”)ATLASBLAS(开源) 关于c++-C/C++中大型非稀疏非方矩阵的多线程乘法,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/

c++ - C++的简单多线程混淆

我正在用Qt开发一个C++应用程序。我有一个非常基本的疑问,如果这太愚蠢,请原谅我......我应该创建多少个线程来在最短时间内将任务分配给它们?我问这个是因为我的笔记本电脑是第三代i5处理器(3210m)。因为它是双核&NO_OF_PROCESSORS环境变量显示4。我在一篇文章中读到,应用程序的动态内存仅适用于启动该应用程序的处理器。所以我应该只创建1线程(因为env变量表示4个处理器)还是2线程(因为我的处理器是双核&env变量可能暗示核心数)或4线程(如果那篇文章是错误的)?请原谅我,因为我是一名试图学习Qt的初级程序员。谢谢:) 最佳答案