将cpu使用权交给其他线程
⑴ 怎么让CPU线程全部使用
手动分配线程
系统自带的任务管理器太过简单,而且每次都要手动选择,回麻烦。
所以用第三方答工具,比如THG Task Assignment Manager。
这是一款用在多处理器系统里面分配任务的工具,为任务管理器的替代者很合适。
第二个面板才是这款软件的重点,它可以指定分配方案,并且记住,下次只要再开程序还是会产生效果。分配方法是:用Browse找到要分配的程序,点Add后,指定一个线程。
把不同类型的工作,比如压缩转换格式和浏览网页,扫描病毒和写文章分配不同的线程,这样比起操作系统自己分配要好,可以让各个线程充分调用。
⑵ 如何设置进程(线程)在指定的CPU上运行
实现方法进程与指定cpu绑定 :SetProcessAffinityMask(GetCurrentProcess(),dwMask); 线程与指定cpu绑定: SetThreadAffinityMask(GetCurrentThread(),dwMask);dwMask为CPU序号的或运算值:1(0001) 代表只运行在CPU1,2(0010)代表只运行在CPU2,3(0011)代表可以运行在CPU1和CPU2 ,以此类推。 设置之前最好判断一下系统有几个CPU: SYSTEM_INFOSystemInfo; GetSystemInfo(&SystemInfo);CPU个数:SystemInfo.dwNumberOfProcessors 当前启用的CPU序号: SystemInfo.dwActiveProcessorMask ,Mask representing the set of processors configured into the system. Bit 0 is processor 0; bit 31 is processor 31. CPU亲缘性介绍 按照默认设置,当系统将线程分配给处理器时,Windows使用软亲缘性来进行操作。这意味着如果所有其他因素相同的话,它将设法在它上次运行的那个处理器上运行线程。让线程留在单个处理器上,有助于重复使用仍然在处理器的内存高速缓存中的数据。 有一种新的计算机结构,称为NUMA(非统一内存访问),在该结构中,计算机包含若干块插件板,每个插 件板上有4个CPU和它自己的内存区。 当CPU访问的内存是它自己的插件板上的内存时,NUMA系统运行的性能最好。如果CPU需要访问位于另一个插件板上的内 存时,就会产生巨大的性能降低。在这样的环境中,就需要限制来自一个进程中的线程在共享同一个插件版的CPU上运行。为了适应这种计算机结构的需要,Windows允许你设置进程和线程的亲缘性。换句话说,你可以控制哪个CPU能够运行某些线程。这称为硬亲缘性。请注意,子进程可以继承进程的亲缘性。 注意:(1)无论计算机中实际拥有多少个CPU,Windows98及以前系统只使用一个CPU,上述API不被支持。 (2)在大多数环境中,改变线程的亲缘性就会影响调度程序有效地在 各个CPU之间移植线程的能力,而这种能力可以最有效地使用CPU时间。 应用场景举例: 将UI线程限制在一个CPU,将其他实时性要求较高的线程限制在另一个CPU。这样,当UI需要占用大量CPU时间时,就不会拖累其他实时性要求较高的线程的执行 。同样可以将UI线程与一些优先级不高但耗时的异步运算线程设置在不同CPU上,避免UI给人卡顿的感觉。
⑶ 如何设置进程(线程)在指定的CPU上运行
实现方法进程与指定cpu绑定
:SetProcessAffinityMask(GetCurrentProcess(),dwMask);
线程与指定cpu绑定:
SetThreadAffinityMask(GetCurrentThread(),dwMask);dwMask为CPU序号的或运算值:1(0001)
代表只运行在CPU1,2(0010)代表只运行在CPU2,3(0011)代表可以运行在CPU1和CPU2
,以此类推。
设置之前最好判断一下系统有几个CPU:
SYSTEM_INFOSystemInfo;
GetSystemInfo(&SystemInfo);CPU个数:SystemInfo.dwNumberOfProcessors
当前启用的CPU序号:
SystemInfo.dwActiveProcessorMask
,Mask representing the set of processors configured into the system. Bit 0 is processor 0;
bit 31 is processor 31.
CPU亲缘性介绍
按照默认设置,当系统将线程分配给处理器时,Windows使用软亲缘性来进行操作。这意味着如果所有其他因素相同的话,它将设法在它上次运行的那个处理器上运行线程。让线程留在单个处理器上,有助于重复使用仍然在处理器的内存高速缓存中的数据。
有一种新的计算机结构,称为NUMA(非统一内存访问),在该结构中,计算机包含若干块插件板,每个插 件板上有4个CPU和它自己的内存区。
当CPU访问的内存是它自己的插件板上的内存时,NUMA系统运行的性能最好。如果CPU需要访问位于另一个插件板上的内 存时,就会产生巨大的性能降低。在这样的环境中,就需要限制来自一个进程中的线程在共享同一个插件版的CPU上运行。
为了适应这种计算机结构的需要,Windows允许你设置进程和线程的亲缘性。换句话说,你可以控制哪个CPU能够运行某些线程。这称为硬亲缘性。请注意,子进程可以继承进程的亲缘性。
注意:(1)无论计算机中实际拥有多少个CPU,Windows98及以前系统只使用一个CPU,上述API不被支持。
(2)在大多数环境中,改变线程的亲缘性就会影响调度程序有效地在 各个CPU之间移植线程的能力,而这种能力可以最有效地使用CPU时间。
应用场景举例:
将UI线程限制在一个CPU,将其他实时性要求较高的线程限制在另一个CPU。这样,当UI需要占用大量CPU时间时,就不会拖累其他实时性要求较高的线程的执行
。同样可以将UI线程与一些优先级不高但耗时的异步运算线程设置在不同CPU上,避免UI给人卡顿的感觉。
⑷ 一个线程通过什么方法将处理器让给另一个优先级别相同的线程
实现方法进程与指定cpu绑定:(GetCurrentProcess(),dwMask);线程与指定cpu绑定:SetThreadAffinityMask(GetCurrentThread(),dwMask);dwMask为CPU序号的或运算值:1(0001)代表只运行在CPU1,2(0010)代表只运行在CPU2,3(0011)代表可以运行在CPU1和CPU2,以此类推。设置之前最好判断一下系统有几个CPU:SYSTEM_INFOSystemInfo;GetSystemInfo(&SystemInfo);CPU个数:SystemInfo.dwNumberOfProcessors当前启用的CPU序号:SystemInfo.dwActiveProcessorMask,.Bit0isprocessor0;bit31isprocessor31.CPU亲缘性介绍按照默认设置,当系统将线程分配给处理器时,Windows使用软亲缘性来进行操作。这意味着如果所有其他因素相同的话,它将设法在它上次运行的那个处理器上运行线程。让线程留在单个处理器上,有助于重复使用仍然在处理器的内存高速缓存中的数据。有一种新的计算机结构,称为NUMA(非统一内存访问),在该结构中,计算机包含若干块插件板,每个插件板上有4个CPU和它自己的内存区。当CPU访问的内存是它自己的插件板上的内存时,NUMA系统运行的性能最好。如果CPU需要访问位于另一个插件板上的内存时,就会产生巨大的性能降低。在这样的环境中,就需要限制来自一个进程中的线程在共享同一个插件版的CPU上运行。为了适应这种计算机结构的需要,Windows允许你设置进程和线程的亲缘性。换句话说,你可以控制哪个CPU能够运行某些线程。这称为硬亲缘性。请注意,子进程可以继承进程的亲缘性。注意:(1)无论计算机中实际拥有多少个CPU,Windows98及以前系统只使用一个CPU,上述API不被支持。(2)在大多数环境中,改变线程的亲缘性就会影响调度程序有效地在各个CPU之间移植线程的能力,而这种能力可以最有效地使用CPU时间。应用场景举例:将UI线程限制在一个CPU,将其他实时性要求较高的线程限制在另一个CPU。这样,当UI需要占用大量CPU时间时,就不会拖累其他实时性要求较高的线程的执行。同样可以将UI线程与一些优先级不高但耗时的异步运算线程设置在不同CPU上,避免UI给人卡顿的感觉。
⑸ 怎样把一个线程绑定到固定的cpu上面
线程调度 计算机通常只有一个CPU,在任意时刻只能执行一条机器指令,每个线程只有获得回CPU的使用权才能执行指令答。
所谓多线程的并发运行,其实是指从宏观上看,各个线程轮流获得CPU的使用权,分别执行各自的任务。
在运行池中,会有多个处于就绪状态的线程
⑹ 如何在线程中途让出 cpu 使用权
top[-][ddelay][q][c][s][S][i]d指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命版令来改变之。q该选项将使top没有权任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。S指定累计模式。s使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。i使top不显示任何闲置或者僵死进程。c显示整个命令行而不只是显示命令名
⑺ java中sleep方法不会释放锁,但是又说sleep会把执行权让给其他线程,这不
因为锁是对共享资源保护的一种手段,不释放锁 别的线程是拿不到资源的,但是别的线程不一定是拿这个资源啊,别的线程可以做其他的事啊
⑻ 如何把一个线程分配给一个具体的CPU来执行
CPU进行多线程切换时由硬件决定的,可以 通过软件来控制吗?
⑼ java讨论新建的线程到底什么时候获得cup的使用权
1.start()后进入来就绪状态,等CPU时间片源轮转到进入执行状态
2.执行过程中,如果发生中断,比如时间片用完、该线程调用了wait方法、调用了sleep方法、等待资源,则进入就绪状态,待该线程执行完或被强行终止进入死亡状态,多线程的控制我目前认为就是通过sleep、wait、notify+同步锁能够控制一下,基本做到像流程语句一样,不过应该没这个必要