草庐IT

多线段

全部标签

c++ - 多线程 C++ 消息传递

我的任务是修改同步C程序,使其可以并行运行。目标是让它尽可能便携,因为它是许多人使用的开源程序。因此,我认为最好将程序包装在C++层中,以便我可以利用可移植的boost库。我已经这样做了,一切似乎都按预期工作。我遇到的问题是决定在线程之间传递消息的最佳方法是什么。幸运的是,该程序的架构是多生产者和单一消费者的架构。更好的是,消息的顺序并不重要。我读过单一生产者/单一消费者(SPSC)队列将从这种架构中受益。那些有多线程编程经验的人有什么建议吗?我对这东西很陌生。此外,我们将不胜感激任何使用boost来实现SPSC的代码示例。 最佳答案

c++ - new 和 delete 处理多线程问题

我正在看书EfficientC++:PerformanceProgrammingTechniques作者对全局新的和删除的运营商说了以下内容:Theymanagememoryintheprocesscontext,andsinceaprocessmayspawnmultiplethreads,new()anddelete()mustbeabletooperateinamultithreadedenvironment.Inaddition,thesizeofmemoryrequestsmayvaryfromonerequesttothenext.第6章单线程内存池。这是真的吗?我认为C+

c++ - 在双缓冲区多线程系统中执行指针交换

当双缓冲数据将在线程之间共享时,我使用了一个系统,其中一个线程从一个缓冲区读取,一个线程从另一个缓冲区读取并从第一个缓冲区读取。问题是,我要如何实现指针交换?我需要使用临界区吗?没有可用的Interlocked函数可以实际交换值。我不能让线程1从缓冲区1读取,然后开始从缓冲区2读取,在读取过程中,这将是appcrash,即使另一个线程没有开始写入它也是如此。我在Windows上的VisualStudioUltimate2010RC中使用nativeC++。 最佳答案 使用临界区是公认的做法。只需在您的所有线程之间共享一个CRITIC

JAVA多线程并发学习记录

基础知识1.进程和线程线程是最小的调度单位,进程是最小的资源分配单位进程:当程序从磁盘加载到内存中这时就开启了一个进程,进程可视为程序的一个实例。大部分程序可以同时运行多个实例。线程:线程是进程的一个子集,是一个指令流,并且将指令流中的指令按顺寻交给cpu执行进程大多相互独立,线程存于进程内部。进程拥有共享的资源供其内部线程共享进程的通信复杂:同一机器进程通信的IPC和不同机器通信的HTTP等线程通信简单,如共享一个变量。线程量级更小,上下文切换成本较低。并行与并发并发:多个线程轮流使用cpu一个核心的做法称为并发(串行)并行:多个指令同时运行称为并行。同步与异步调用定义:同步——需要等待结果

简单Java多线程套接字应用程序

我有这个简单的多线Java套接字应用程序。使用classClient.javapublicclassClient{privatestaticSocketsocket;privatestaticbooleanwaitForServer=false;publicstaticvoidmain(String[]args)throwsIOException{while(true){socket=newSocket("localhost",ServerPortInfo.getPort());PrintWriterprintWriter=newPrintWriter(socket.getOutputStre

java - 多线程循环的效率

问候贵族社区,我想要以下循环:for(i=0;i这将在使用线程的共享内存四核计算机上并行运行。对于这些线程要执行的代码,正在考虑以下两个备选方案,其中tid是线程的ID:0、1、2或3。(为简单起见,假设MAX是4的倍数)选项1:for(i=tid;i选项2:for(i=tid*(MAX/4);i我的问题是是否有一种比另一种更有效,为什么? 最佳答案 第二个比第一个好。简单答案:第二个最小化falsesharing现代CPU不会将一个字节一个字节地加载到缓存中。它在称为缓存行的批处理中读取一次。当两个线程试图修改同一缓存行上的不同变

【图像拼接/线段匹配】论文精读:Novel Coplanar Line-points Invariants for Robust Line Matching Across Views(CN)

第一次来请先看这篇文章:【图像拼接(ImageStitching)】关于【图像拼接论文精读】专栏的相关说明,包含专栏使用说明、创新思路分享等(不定期更新)图像拼接系列相关论文精读SeamCarvingforContent-AwareImageResizingAs-Rigid-As-PossibleShapeManipulationAdaptiveAs-Natural-As-PossibleImageStitchingShape-PreservingHalf-ProjectiveWarpsforImageStitchingSeam-DrivenImageStitchingParallax-tol

【C#】知识点实践序列之Lock的输出多线程信息

大家好,我是全栈小5,欢迎来到《小5讲堂之知识点实践序列》文章。2024年第2篇文章,此篇文章是C#知识点实践序列之Lock知识点,博主能力有限,理解水平有限,若有不对之处望指正!本篇在Lock锁定代码块输出多线程信息,用于判断是否是同一个线程还是不同线程。目录前言实践场景线程效果代码疑问解答线程调度前言上篇文章已经回顾基本概念,并验证了Lock锁定代码块多线程访问效果。实践场景同样是执行三个方法,三个Task异步方法调用同一个方法。线程在C#中,线程是用于执行代码的基本执行单元。线程可以让程序在多个任务之间切换执行,以实现并发和并行处理。线程基本信息,线程ID、线程名称、线程状态、是否为后台

c++ - 多线程和内存

我在VisualC++文档中读到,多个线程从同一对象读取是安全的。我的问题是:多核X86-64CPU如何处理这个问题?假设您有一个1MB的内存块。不同的线程真的能够同时读取完全相同的数据,还是内核一次读取一个词而一次只允许一个内核读取一个特定的词? 最佳答案 如果您的1MBblock中确实没有写入,那么是的,每个内核都可以毫无问题地从其自己的缓存行中读取,因为没有提交写入,因此不会出现缓存一致性问题。在多核架构中,基本上每个内核都有一个缓存和一个“缓存一致性协议(protocol)”,它使某些没有最新信息的内核上的缓存无效。我认为大

c++ - 如果我有固定数量的相互独立的计算,多线程是否会显着提高性能?

我正在编写光线转换游戏引擎。可以在不知道其他射线的情况下计算每条射线(我只计算距离)。由于计算之间没有等待时间,我想知道使光线计算多线程化是否值得。性能是否有可能提升? 最佳答案 如果处理得当,多线程很可能会提高性能。按照您陈述问题的方式,它是多线程的完美候选者,因为计算是独立的,从而将线程之间的协调需求降至最低。您仍然可能无法获得加速,或者可能无法获得预期的全部速度的一些原因可能包括:1)瓶颈可能不是片上CPU执行资源(例如,ALU绑定(bind)操作),而是一些共享的东西,例如内存或共享LLC带宽。例如,在某些架构上,单个线程可