草庐IT

多线段

全部标签

c++ - Windows 上 localtime_s() 多线程性能不佳的解决方法

好像localtime_s()(相当于标准localtime_r)包含MSVC中的关键部分。为了比较,这里有2个示例应用程序,一个是localtime_s在一个循环中,另一个gmtime_s.http://rextester.com/OQJ48177http://rextester.com/JNDR45936分析显示内部有严重的锁争用isindst从common_localtime_s调用:gmtime没有出现问题:有什么方法可以解决这个问题,让自己保持清醒localtime_s多线程环境中的性能,前提是我的进程中确实需要本地时间? 最佳答案

c++ - C/C++ 中的基本多线程——提示、建议、教程、一些方向?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我想学习如何构建多线程应用程序,但我什至不知道从哪里开始。大多数人如何实现多线程?他们使用boost库吗?还有其他方法吗?(使用标准C/C++)我理解这个概念,但完全不知道从哪里开始真正学习如何去做。谁能推荐一下?http://msdn.microsoft.com/en-us/library/7t9ha0zh%28v=VS.80%29.aspxWindo

c++ - 从多线程应用程序中高效退出(细节)

我已经阅读了一些关于将消息从一个线程冒泡到所有其他线程以正常退出的正确方法的来源(每个线程都执行它自己的退出例程)。其中,我喜欢全局原子bool值的想法,它可以从任何线程进行标记,所有其他线程检查此标记以执行退出例程-当所有线程都加入时,主线程然后可以退出应用程序。纯粹的计算线程可能会有不同的处理方式,对吧?这样既高效又安全吗?有更好的方法吗?谢谢! 最佳答案 我不喜欢线程检查bool(或其他)状态变量以了解何时做什么,因为这很浪费。线程将不得不旋转,不断检查变量以查看是否有新指令。这会烧毁CPU。更好的选择是创建一个信号量或在Wi

c++ - 关于多线程环境下static const变量的使用

我正在尝试了解潜在的场景以及它是否可能成为问题。所以我有一个当前线程安全的静态函数。函数是这样的:staticthread_safe_func(){...process}现在在此函数中,我添加以下内容:staticthread_safe_func(){staticconstClass::NonThreadSafeClassName()*array[16]={Class::NonThreadSafeClassName(),Class::NonThreadSafeClassName(),Class::NonThreadSafeClassName(),Class::NonThreadSafe

c++ - 从 C++ 中的文件中读取多线程?

我的应用程序使用文本文件将数据存储到文件中。我正在测试通过多线程操作来读取它的最快方法。我使用了以下两种技术:使用与NUMBER_OF_PROCESSORS环境变量一样多的流。每个流都在不同的线程上。将文件中的总行数平均分配给每个流。解析文本。只有一个流解析整个文件并将数据加载到内存中。创建线程(=NUM​​BER_OF_PROCESSORS-1)以解析内存中的数据。测试是在100kB-800MB的各种文件大小上运行的。文件中的数据:100.23123-42343.342555...(andsoon)4928340-93240.2349......数据存储在double的二维数组中。结

多线程的利器:CompletableFuture 你还可以这样使用多线程

CompletableFuture是java8开始提供的API,解决了在多线程场景下繁琐的代码逻辑,日常开发中,我们都会用到线程池,一般会用execute()和submit()方法提交任务。但是当你用过CompletableFuture之后,就会发现以前的线程池处理任务有多难用,功能有多简陋,CompletableFuture又是多么简洁优雅。要知道CompletableFuture已经随着Java8发布7年了,使用CompletableFuture更便利使用多线程。1.使用线程池处理任务@TestpublicvoidTest27(){//1.创建线程池ExecutorServiceexecu

c++ - 多线程环境中的析构函数?

我想知道在这样的类(class)中会发生什么:classMyClass{private:std::vectoriVector;voidWorker(){//LotsofstuffdonewithiVector//adding,removingelements,etc.}}假设我创建了一个使用iVector并修改它的线程(由类成员函数之一调用)。除了这个worker之外,该类的其他成员函数都没有读取或修改这个std::vector。一切似乎都很好,因为工作线程是唯一使用iVector的线程。但是当对象的一个​​实例被销毁时会发生什么?即使对象在工作线程完成后被销毁,iVector的析构函

我们聊聊单核可以实现多线程吗?

首先答案是“可以”,接下来就说说为啥可以。解释此问题可以从两个方面思考,一个是计算机如此复杂和强大的根本原因是什么?一个是硬件与软件的依赖关系是怎样的?明确了这两个问题的答案后,再回头看本问题,就会发现单核能够实现多线程是多么理所当然的事。一、计算机如此复杂和强大的原因了解过计算机和操作系统历史的人应该很快就能发现,计算机之所以会变得如此复杂和强大完全是“单核多任务”的实现与不断扩展导致的。计算机就是因为要实现“单核多任务”而变得复杂的,同时也是因为实现了“单核多任务”变得强大,然后在对“单核多任务”的不断扩展中变得更加强大。比如操作系统在最开始就只是个简单的“批处理系统”,本质就是个多任务管

【Linux】多线程(线程概念+线程控制)

🌇个人主页:平凡的小苏📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风翻盘。🛸C++专栏:Linux内功修炼家人们更新不易,你们的👍点赞👍和⭐关注⭐真的对我真重要,各位路过的友友麻烦多多点赞关注。欢迎你们的私信提问,感谢你们的转发!关注我,关注我,关注我,你们将会看到更多的优质内容!!一、Linux线程概念1、什么是线程在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。一切进程至少都有一个执行线程。线程在进程内部运行,本质是在进程地址空间内运行。在Linux

c++ - 如何在多线程中使用模板类型作为槽和信号参数?

我可以以任何方式使用模板类型作为槽或信号参数吗?例如,我正在尝试定义以下内容:voidexampleSignal(std::maparg);voidexampleSlot(std::maparg);这会在运行时产生以下结果:QObject::connect:Cannotqueueargumentsoftype'std::map'(Makesure'std::map'isregisteredusingqRegisterMetaType().)正在尝试注册std::map与Q_DECLARE_METATYPE()导致编译失败并且显然不受支持。作为解决方法,我使用QVariantMap而不是