草庐IT

多线段

全部标签

c# - C#中的多线程CPU使用率

我的程序使用预定数量的线程,每个线程独立工作。我使用i7-2600CPU,但我关闭了超线程模块,因此它在4个内核上运行4个线程。当我用1个线程运行程序时,CPU使用率为25%,这是完美的,因为1个线程已被完全使用,但当我运行4或3个线程时,我只得到60%的CPU,为什么?就像我之前提到的那样,线程是完全独立的(没有锁也没有争用),当我用1个线程运行程序4次时,我得到100%的CPU使用率(即当它的4个进程每个进程有1个线程时我得到了正确的CPU使用率)有什么想法吗?更多信息:在处理所有需要的数据时,我没有使用I/O加载到内存中,每个线程在处理之前加载自己的数据。我确实从数据库加载数据(

c# - C# 中的多线程 NamePipeServer

你好我想使用.NET3.5中新增的NamedPipeServerStream进行命名管道通信。我想写多线程管道服务器。它是默认处理的还是我应该为此编写代码。我的管道服务器应该一次处理多个请求任何解决方案或代码? 最佳答案 您可以通过重复创建NamedPipeServerStream并等待一个连接,然后为该NamedPipeServerStream实例生成一个线程来编写多线程管道服务器。根据下面链接的.NETMSDN文档,您只能有254个并发客户端。对于Win32API,虽然您可以传递一个特殊值以获得基于系统资源的无限制。如下所述,M

c# - 有哪些工具可用于测试多线程 .net 代码?

在测试多线程.net代码时,是否有任何工具可以帮助查找竞争条件?我正在寻找与IBM的ConTest具有类似功能的东西Java工具。 最佳答案 TypemockRacer可能是你要找的东西,但我没有用过它——我只是想起了一些关于死锁的事:)或者这个:DeadlockDetector 关于c#-有哪些工具可用于测试多线程.net代码?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2

c# - 什么时候使用多线程?

什么时候在应用程序中使用线程?例如,在简单的CRUD操作中,使用smtp,如果服务器面临带宽问题,调用web服务可能需要一些时间等。老实说,我不知道如何确定我是否需要使用线程(我知道必须是在我们排除一个操作需要花费一些时间才能完成时)。这可能是一个“菜鸟”问题,但如果您能与我分享您在线程方面的经验,那就太好了。谢谢 最佳答案 我在您的问题中添加了C#和.NET标签,因为您在标题中提到了C#。如果这不准确,请随时删除标签。多线程有不同的风格。例如,有回调函数的异步操作。.NET4引入了并行Linq库。您要使用的多线程样式,或者是否使用

c# - 调试多线程应用程序

我继承了一个在开始时抛出100个线程的应用程序。这使我的调试生活变得异常棘手。有没有办法让VisualStudio跟随一个线程? 最佳答案 您是否尝试过在VisualStudio中使用“线程”窗口(在“调试”/“Windows”菜单中)?您可以卡住线程并在它们之间切换 关于c#-调试多线程应用程序,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4364738/

c# - 多线程.NET队列问题

我的代码中有一个奇怪的错误。这种情况极为罕见(可能每隔几周发生一次),但它确实存在,我不确定为什么。我们有2个线程在运行,1个线程获取网络消息并将它们添加到队列中,如下所示:DataMessages.Enqueue(newDataMessage(client,msg));另一个线程从这个队列中取出消息并处理它们,就像这样:while(NetworkingClient.DataMessages.Count>0){DataMessagemessage=NetworkingClient.DataMessages.Dequeue();switch(message.messageType){..

c# - 如何从多线程访问 GUI (GTK)?

我有一个从GUI生成的工作线程(用于GUI性能),我如何访问GUI,例如从线程本身生成新窗口/小部件?我尝试使用委托(delegate),但它似乎不起作用。有任何想法吗?可能的例子?谢谢。 最佳答案 根据他们的BestPractices:Gtk#isnotathread-safetoolkit,whichmeansthatonlyonethreadatatimecansafelyinvokemethodsonGtk#.Thisthreadistypicallythethreadexecutingthemainloop(whichis

c# - 使用 .NET 进行多线程文件处理

有一个文件夹包含1000多个小文本文件。我的目标是在将更多文件填充到文件夹中时解析和处理所有这些文件。我的意图是对该操作进行多线程处理,因为单线程原型(prototype)需要6分钟来处理1000个文件。我喜欢如下所示的读者和作者线程。当读者线程正在读取文件时,我想让编写者线程来处理它们。一旦读者开始阅读文件,我想将其标记为正在处理,例如通过重命名它。阅读后,将其重命名为completed。如何处理这样的多线程应用程序?分布式哈希表好还是队列好?我应该使用哪种数据结构来避免锁定?这个方案有更好的方法吗? 最佳答案 由于对.NET4如

c# - WPF/多线程 : UI Dispatcher in MVVM

也就是说,在MVVM环境中,我在后台线程中,我想在ui控件上运行更新。所以通常我会去myButton.Dispatcher.BeginInvoke(blabla)但我无权访问myButton(因为View模型无权访问View的控件)。那么这样做的正常模式是什么?(我猜总有绑定(bind),但我想知道如何通过调度程序做到这一点) 最佳答案 我通常使用Application.Current.Dispatcher:因为Application.Current是静态的,所以您不需要对控件的引用 关

【多线程进阶】锁策略和CAS面试题

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!欢迎志同道合的朋友一起加油喔🦾🦾🦾​​​​​​​目录1.乐观锁vs悲观锁1.1悲观锁1.2乐观锁2.重量级锁vs轻量级锁2.1轻量级锁2.2重量级锁3.自旋锁VS挂起等待锁3.1自旋锁3.2 挂起等待锁4.互斥锁VS读写锁4.1互斥锁4.2读写锁5.可重入锁VS不可重入锁5.1可重入锁5.2不可重入锁6.CAS6.1实现原子类:6.2实现自旋锁:7.面试题,CAS的ABA问题怎么解决1.乐观锁vs悲观锁Java中的乐观锁和悲观锁是两种并发控制的策略,用于解决多线程访问共享资源时可能出现的竞争和冲突问题。1.1悲观锁悲观锁的思想是,