怎么设置进程优先级?
3、设置进程优先级
在Windows中每一个程序都有一个进程和进程号,而且它们之间有优先级别的差异。一般用户想更改它们的默认优先级别,那简直是势比登天!不过,有一任务管理器,就觉得易如反掌了!首先在“应用程序”项目中选择欲设置优先级的程序,然后右击,选择“转到进程”命令(如图2),此时在进程选项窗口中相应进程会被选中,右击,选择“设置优先级”命令,并在滑出的子菜单中自由设置吧(如图3)!一切都由您自己说了算!当然,我们也可以选择“终止进程”命令来结束这个进程。不过,终止进程时要小心。如果结束应用程序,您将丢失未保存的数据。如果结束系统服务,系统的某些部分可能无法正常工作。
java中获取线程优先级的方法setPriority要怎么调用?最好给个简单易懂的例子 谢谢
class MyMoreThread extends Thread
{
public MyMoreThread()
{
super();
}
public MyMoreThread(String name)
{
super(name);
}
public void run()
{
for(int i=0;i<10;i++)
{
System.out.println(super.getName()+":"+i);
}
}
}
public class PriorityTest
{
public static void main(String[] args)
{
MyMoreThread thread1=new MyMoreThread("第1个线程");
MyMoreThread thread2=new MyMoreThread("第2个线程");
thread1.setPriority(Thread.MIN_PRIORITY);
thread2.setPriority(Thread.MAX_PRIORITY);
thread1.start();
thread2.start();
}
}
线程的优先级如何调高?
每个进程都有相应的优先级,优先级决定它何时运行和接收多少CPU时间。最终的优先级共32级,是从0到31的数值,称为基本优先级别(Base Priority LeveL)。系统按照不同的优先级调度进程的运行,0-15级是普通优先级,进程的优先级可以动态变化,高优先级进程优先运行,只有高优先级进程不运行时,才调度低优先级进程运行,优先级相同的进程按照时间片轮流运行。16-31级是实时优先级,实时优先级与普通优先级的最大区别在于相同优先级进程的运行不按照时间片轮转,而是先运行的进程就先控制CPU,如果它不主动放弃控制,同级或低优先级的进程就无法运行。这就是进(线)程的推进问题。
线程优先级主要取决于CPU的等待时间,如果使用多核,没有存在CPU阻塞,不存在CPU等待时,优先级也就没有用了.
在任务管理器中可以把其他的进程的线程跳到最低或者较低,把股票软件调至最高。
如何使用 cmd 命令更改已运行的程序的优先级
AT 计划在计算机上运行的命令和程序。 ATTRIB 显示或更改文件属性。 BREAK 设置或清除扩展式 CTRL+C 检查。 CACLS 显示或修改文件的访问控制列表(ACLs)。 CALL 从另一个批处理程序调用这一个。 CD 显示当前目录的名称或将其更改。 CHCP 显示或设置活动代码页数。 CHDIR 显示当前目录的名称或将其更改。 CHKDSK 检查磁盘并显示状态报告。 CHKNTFS 显示或修改启动时间磁盘检查。 CLS 清除屏幕。 CMD 打开另一个 Windows 命令解释程序窗口。 COLOR 设置默认控制台前景和背景颜色。 COMP 比较两个或两套文件的内容。 COMPACT 显示或更改 NTFS 分区上文件的压缩。 CONVERT 将 FAT 卷转换成 NTFS。您不能转换 当前驱动器。 COPY 将至少一个文件复制到另一个位置。 DATE 显示或设置日期。 DEL 删除至少一个文件。 DIR 显示一个目录中的文件和子目录。 DISKCOMP 比较两个软盘的内容。 DISKCOPY 将一个软盘的内容复制到另一个软盘。 DOSKEY 编辑命令行、调用 Windows 命令并创建宏。 ECHO 显示消息,或将命令回显打开或关上。 ENDLOCAL 结束批文件中环境更改的本地化。 ERASE 删除至少一个文件。 EXIT 退出 CMD.EXE 程序(命令解释程序)。 FC 比较两个或两套文件,并显示 不同处。 FIND 在文件中搜索文字字符串。 FINDSTR 在文件中搜索字符串。 FOR 为一套文件中的每个文件运行一个指定的命令。 FORMAT 格式化磁盘,以便跟 Windows 使用。 FTYPE 显示或修改用于文件扩展名关联的文件类型。 GOTO 将 Windows 命令解释程序指向批处理程序 中某个标明的行。 GRAFTABL 启用 Windows 来以图像模式显示 扩展字符集。 HELP 提供 Windows 命令的帮助信息。 IF 执行批处理程序中的条件性处理。 LABEL 创建、更改或删除磁盘的卷标。 MD 创建目录。 MKDIR 创建目录。 MODE 配置系统设备。 MORE 一次显示一个结果屏幕。 MOVE 将文件从一个目录移到另一个目录。 PATH 显示或设置可执行文件的搜索路径。 PAUSE 暂停批文件的处理并显示消息。 POPD 还原 PUSHD 保存的当前目录的上一个值。 PRINT 打印文本文件。 PROMPT 更改 Windows 命令提示符。 PUSHD 保存当前目录,然后对其进行更改。 RD 删除目录。 RECOVER 从有问题的磁盘恢复可读信息。 REM 记录批文件或 CONFIG.SYS 中的注释。 REN 重命名文件。 RENAME 重命名文件。 REPLACE 替换文件。 RMDIR 删除目录。 SET 显示、设置或删除 Windows 环境变量。 SETLOCAL 开始批文件中环境更改的本地化。 SHIFT 更换批文件中可替换参数的位置。 SORT 对输入进行分类。 START 启动另一个窗口来运行指定的程序或命令。 SUBST 将路径跟一个驱动器号关联。 TIME 显示或设置系统时间。 TITLE 设置 CMD.EXE 会话的窗口标题。 TREE 以图形模式显示驱动器或路径的目录结构。 TYPE 显示文本文件的内容。 VER 显示 Windows 版本。 VERIFY 告诉 Windows 是否验证文件是否已正确 写入磁盘。 VOL 显示磁盘卷标和序列号。 XCOPY 复制文件和目录树。 appwiz.cpl------------添加删除程序 control userpasswords2--------用户帐户设置 cleanmgr-------垃圾整理 CMD--------------命令提示符可以当作是 Windows 的一个附件,Ping,Convert 这些不能在图形环境下 使用的功能要借助它来完成。
如何使用命令改变已执行程序的优先级?
例如,设置记事本进程(notepad.exe)的优先级为“高”,vbs 代码:Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")Set colProcesses = objWMIService.ExecQuery("Select * from Win32_process where name='notepad.exe'")For Each objProcess In colProcessesobjProcess.SetPriority 128 'vbs的这个参数是数字Next设置优先级为“高于标准”,cmd 命令:wmic process where name='notepad.exe' call SetPriority "Above Normal"优先级参数(参数是数字或一个单词可以不加引号):64 低32 标准128 高256 实时16384 低于标准32768 高于标准Idle 低Below Normal 低于标准Normal 标准Above Normal 高于标准High Priority 高Realtime 实时
如何在linux/unix中设置线程的优先级
我们使用int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);
来创建线程,但是如何设置线程的优先级呢?
在讨论这个问题的时候,我们先要确定当前线程使用的调度策略,posix提供了
int pthread_attr_getschedpolicy(const pthread_attr_t *attr, int *policy);函数来获取所
使用的调度策略,它们是:SCHED_FIFO, SCHED_RR 和 SCHED_OTHER。
我们可以使用
int sched_get_priority_max(int policy);
int sched_get_priority_min(int policy);
来获取线程线程可是设置的最大和最小的优先级值,如果调用成功就返回最大和最小的优先级值,否则返回-1。
从我现在运行的linux系统中,我使用下列程序(程序见附录)获取了对应三种调度策略中的最大和最小优先级:
policy = SCHED_OTHER
Show current configuration of priority
max_priority = 0
min_priority = 0
Show SCHED_FIFO of priority
max_priority = 99
min_priority = 1
Show SCHED_RR of priority
max_priority = 99
min_priority = 1
Show priority of current thread
priority = 0
Set thread policy
Set SCHED_FIFO policy
policy = SCHED_FIFO
Set SCHED_RR policy
policy = SCHED_RR
Restore current policy
policy = SCHED_OTHER
我们可以看到
SCHED_OTHER是不支持优先级使用的,而SCHED_FIFO和SCHED_RR支持优先级的使用,他们分别为1和99,数值越大优先级越高。 从上面的结果我们可以看出,如果程序控制线程的优先级,一般是用pthread_attr_getschedpolicy来获取系统使用的调度策略,如果是SCHED_OTHER的话,表明当前策略不支持线程优先级的使用,否则可以。当然所设定的优先级范围必须在最大和最小值之间。我们可以通过sched_get_priority_max和sched_get_priority_min来获取。
可能网友会问,是否我们可以通过int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);来设定自己所需的调度策略呢?我觉得是完全可以的(有些系统需要定义_POSIX_THREAD_PRIORITY_SCHEDULING),只要系统实现了对应的调用策略。
说了半天,我们还没有说,在系统允许使用线程优先级别的时候,如何设置优先级别呢?
int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param);
int pthread_attr_getschedparam(const pthread_attr_t *attr, struct sched_param *param);
上面两个函数分别用于设置线程的优先级,struct sched_param的定义如下
struct sched_param
{
int __sched_priority; //所要设定的线程优先级
};
例:创建优先级为10的线程
pthread_attr_t attr;
struct sched_param param;
pthread_attr_init(&attr);
pthread_attr_setschedpolicy(&attr, SCHED_RR);
param.sched_priority = 10;
pthread_attr_setschedparam(&attr, ¶m);
pthread_create(xxx , &attr , xxx , xxx);
pthread_attr_destroy(&attr);
附:使用的测试程序:
#include
#include
#include
#include
using namespace std;
static int get_thread_policy( pthread_attr_t &attr )
{
int policy;
int rs = pthread_attr_getschedpolicy( &attr, &policy );
assert( rs == 0 );
switch ( policy )
{
case SCHED_FIFO:
cout << "policy = SCHED_FIFO" << endl;
break;
case SCHED_RR:
cout << "policy = SCHED_RR" << endl;
break;
case SCHED_OTHER:
cout << "policy = SCHED_OTHER" << endl;
break;
default:
cout << "policy = UNKNOWN" << endl;
break;
}
return policy;
}
static void show_thread_priority( pthread_attr_t &attr, int policy )
{
int priority = sched_get_priority_max( policy );
assert( priority != -1 );
cout << "max_priority = " << priority << endl;
priority = sched_get_priority_min( policy );
assert( priority != -1 );
cout << "min_priority = " << priority << endl;
}
static int get_thread_priority( pthread_attr_t &attr )
{
struct sched_param param;
int rs = pthread_attr_getschedparam( &attr, ¶m );
assert( rs == 0 );
cout << "priority = " << param.__sched_priority << endl;
return param.__sched_priority;
}
static void set_thread_policy( pthread_attr_t &attr, int policy )
{
int rs = pthread_attr_setschedpolicy( &attr, policy );
assert( rs == 0 );
get_thread_policy( attr );
}
int main( void )
{
pthread_attr_t attr;
struct sched_param sched;
int rs;
rs = pthread_attr_init( &attr );
assert( rs == 0 );
int policy = get_thread_policy( attr );
cout << "Show current configuration of priority" << endl;
show_thread_priority( attr, policy );
cout << "Show SCHED_FIFO of priority" << endl;
show_thread_priority( attr, SCHED_FIFO );
cout << "Show SCHED_RR of priority" << endl;
show_thread_priority( attr, SCHED_RR );
cout << "Show priority of current thread" << endl;
int priority = get_thread_priority( attr );
cout << "Set thread policy" << endl;
cout << "Set SCHED_FIFO policy" << endl;
set_thread_policy( attr, SCHED_FIFO );
cout << "Set SCHED_RR policy" << endl;
set_thread_policy( attr, SCHED_RR );
cout << "Restore current policy" << endl;
set_thread_policy( attr, policy );
rs = pthread_attr_destroy( &attr );
assert( rs == 0 );
return 0;
}
编译命令:
#g++ pthread_priority3.c -o pthread_priority3 -lpthread
如何修改linux系统中进程的优先级
可以用nice和renice
nice设定进程相对优先级
-20~19 共40个级别,nice值越大,优先级越低
renice 重新设定优先级
renice [nice level] [PID]
-n:指定权限
-u:指定用户姓名或ip
-g:指定组
-p:进程PID
例: renice +1 987 -u test root -p 32 ##更改PID为987和32的nice level,外加所有root和test拥有的进程
如何锁定进程优先级?
使用命令提高已运行程序的优先级
用cmd命令将下面这个一句话写在命令提示符窗口里面:
echo y|wmic process where "name='iw4sp.exe'" call setpriority 256
或者将上面这一句话复制粘贴到bat文件里面运行,测试通过。
补充回答:
本来打算用vbs解决,方法如下:
'══代══码══开══始════
Set wmiService = GetObject("winmgmts:\\.\root\cimv2")
Set wmiObjects = wmiService.ExecQuery("SELECT * FROM Win32_process where name='iw4sp.exe'")
For Each wmiObject In wmiObjects
wmiObject.setPriority(256)
next
'══代══码══结══束════
原理一样,但是总是只能设置为高优先级,而不是实时。
======================
start /realtime notepad.exe
echo y|wmic process where "name='dnf.exe'" call setpriority 32
wmic process where name='dnf.exe' call SetPriority "Above Normal"
%
64 低
32 标准
128 高
256 实时
Idle 低
Below Normal 低于标准
Normal 标准
Above Normal 高于标准
High Priority 高
Realtime 实时
%
怎样设置进程的“优先级”??
应该是系统自定的,还是不要变了
问:进程中有一个“设置优先级”,我查看了一下,发现都是“标准”,那么是不是需要对那些进程手工调整一下呢?
答:优先级是系统自动来调整的,一般无需我们自己调整。不过遇到特殊情况,调整一下对电脑使用有好处。比如你想一边看电影一边打文字或干别的什么话,那么就调整那个电影播放器的进程,设置为“低于标准”,系统提示“可能会导致系统不稳定”,不要管它,选“是”继续。这样前台程序就会比后台程序(播放软件)优先,系统会让前台程序优先执行,前台程序空闲的时候再让后台程序满负荷工作。这样就可以充分占用前台程序剩下的系统资源,达到对系统资源的高效利用。
WINDOWS核心编程第7章讲的是线程的调度、优先级和亲缘性,其中dwpc定义为DWORD类型,指向对应进程的优先级值, DWORD dwpc;GetPriorityClass定义为全局函数,返回进程的优先级;SetPriorityClass()函数设置当前进程的优先级。
如何用java接口,有两个方法:setPriority和getpriority,设计Task类Priority,建立驱动类测试Task对象?
interface Jiekou{
public void setPriority(int i);
public int getPriority();
}
class Task implements Jiekou{
int i;
public void setPriority(int i){
this.i=i;
}
public int getPriority(){
return i;
}
}
public class TaskTest{
public static void main(String args[]){
int test;
Task task=new Task();
task.setPriority(6);
test=task.getPriority();
System.out.println(test);
}
}
不知道你说的是不是这个意思,仅供参考!