首页 / 知识
关于c#:应用程序如何在.NET或Java中使用多个内核或CPU?
2023-04-13 18:46:00

How can an application use multiple cores or CPUs in .NET or Java?在.NET或Java中启动线程或进程时,是否可以选择在哪个处理器或内核上启动它? 在这种情况下,共享内存模型如何工作? 如果您使用多个线程,则操作系统将自动使用多个内核。
您可以使用任务管理器来告诉Windows应允许您的程序在哪个CPU上运行。通常,这仅对故障排除多线程实现的旧程序有用。去做这个,
如果我没记错的话,Windows将在以后的过程中"记住"这些设置,但请不要在此引用我的内容-自己运行一些测试:-??) 您也可以使用System.Diagnostics.Process.ProcessorAffinity属性在程序启动后在.NET中以编程方式执行此操作,但我认为它不会"记住"设置,因此始终会有很短的时间您的应用可以在任何适合的CPU窗口上运行。我不知道如何在Java中执行此操作。 注意: 这适用于整个过程级别。如果仅设置对CPU0的亲和力,然后启动50个线程,则所有这50个线程将在CPU0上运行,而CPU1、2、3等将无所事事。 只是要重申这一点,这主要用于对已损坏的旧版软件进行故障排除。如果您的软件没有损坏,那么您真的不应理会这些设置中的任何一项,而让Windows确定运行程序的最佳CPU,这样就可以考虑系统的其余性能。 至于"共享内存"模型,它的工作原理相同,但是当您的应用程序在多个CPU上运行而不是单个时间片时,还有很多事情可能会出错。 有关一个令人大开眼界的示例,请阅读这篇关于CPU和内存屏障的荒谬文章。 它的目标是在PowerPC上进行OSX开发,但它的通用性足以使它应运而生。恕我直言,这是我读过的十大"所有开发人员都应阅读此"文章之一。 当虚拟机使用本机线程(而不是绿色线程)时,操作系统将负责多线程,并且您无法指定低级详细信息,例如为特定线程选择处理器。这样做比较好,因为通常您拥有的线程多于可用的处理器,因此操作系统需要进行时间分割以使所有线程都有运行的机会。 话虽如此,如果您有一项关键任务,则可以设置线程优先级,而线程API通常会提供这种可能性。例如,请参见Java API:http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html#setPriority(int) PS:解析引擎中发生了一些问题……我不得不将以上链接添加为纯文本 我将看看.NET框架的并行扩展。它仍然处于CTP中,但是应该充分利用多核处理器。 .NET入门最简单的地方是并行团队博客。 至于Java我不知道。 我在几个程序中使用了它,因为我的核心0有点混乱。
要么
有关更多信息,请参见" Process.ProcessorAffinity属性"。 |
最新内容
相关内容
如何杀死一个Python线程
如何杀死一个Python线程,状态,线程,代码,标准,意外,工作,控制权,培训,事件,结束,我经常被问到如何杀死一个后台线程,这个问题的答案让很多人不Python学习之进程和线程
Python学习之进程和线程,代码,平台,系统,线程,进程,标准,数据,服务,培训,管理,对于操作系统来说,一个任务就是一个进程(Process),比如打开一个Python实现线程安全的单例模式
Python实现线程安全的单例模式,代码,系统,信息,地方,设计,培训,实例,线程,模式,存在,单例模式是一种常见的设计模式,该模式的主要目的是确保某Python线程编程的两种方式
Python线程编程的两种方式,代码,包装,线程,培训,函数,对象,模块,参数,方式,方法,Python中如果要使用线程的话,python的lib中提供了两种方式。Python 多线程死锁问题的巧妙解决
Python 多线程死锁问题的巧妙解决方法,异常,持有,代码,情况,信息,管理,数据,包装,策略,预期,死锁死锁的原理非常简单,用一句话就可以描述完。Python进程、线程、协程的区别
Python进程、线程、协程的区别,地址,单位,线程,入口,状态,培训,进程,区别,资源,空间,简述进程、线程、协程的区别以及应用场景?线程是指进程python线程同步(锁)
python线程同步(锁),状态,数据,情况,线程,培训,通信,暂停,概念,异常,条件,多线程的优势在于可以同时运行多个任务(至少感觉起来是这样)。但是Python 线程对象
Python 线程对象,线程,名称,单位,时间,培训,对象,程序,参数,方法,函数,先了解一下Python守护线程基本概念。守护线程:当一个线程被标记为守护python 进程间通信
python 进程间通信,数据,项目,生产,通信,通讯,队列,生产者,培训,异常,进程,虽然可以用文件共享数据实现进程间通信,但问题是:1)效率低(共享数据python 进程池
python 进程池,工作,进程,时间,培训,下降,系统,管理,函数,操作,结果,在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控python多线程和多进程之间的联系
python多线程和多进程之间的联系,进程,培训,通信,标准,管理,代理,线程,模块,之间,全部,关于多线程的大概讲解:在Python的标准库中给出了2个模python怎样终止线程
python怎样终止线程,培训,线程,方法,定义,以上,更多,内容,在python中启动和关闭线程:一、启动线程首先导入threadingimportthreading然后定