VSC++线程篇之三设置优先级

更新时间:2023-05-15 11:52:33 阅读: 评论:0

VSC++线程篇之三设置优先级
设置线程优先级
BOOL WINAPI SetThreadPriority(
__in HANDLE hThread,
__in int nPriority
);
参数nPriority的值
THREAD_MODE_BACKGROUND_BEGIN
0x00010000
THREAD_MODE_BACKGROUND_END
0x00020000
THREAD_PRIORITY_ABOVE_NORMAL
⾼于正常1
THREAD_PRIORITY_BELOW_NORMAL
低于正常-1
THREAD_PRIORITY_HIGHEST
最⾼
2
THREAD_PRIORITY_IDLE
私房菜做法空闲
-15
THREAD_PRIORITY_LOWEST
最低
-2
THREAD_PRIORITY_NORMAL
正常
THREAD_PRIORITY_TIME_CRITICAL
实时
15
调度⽅式
⾼优先级优先调度,同优先级机会均等。
低优先级线程也会执⾏的,由系统决定。
创建线程时函数中如何设置
HANDLE WINAPI CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags, // CREATE_SUSPENDED 线程被创建后挂起,直到 ResumeThread 函数被调⽤才运⾏。
// 0 线程创建后⽴即运⾏。
LPDWORD lpThreadId
);
DWORD WINAPI ResumeThread(
HANDLE hThread
);
例程1:默认优先级执⾏
DWORD WINAPI ThreadProFuncA(LPVOID lpParam);
DWORD WINAPI ThreadProFuncB(LPVOID lpParam);
int main(int argc, char **argv)
{
HANDLE hThreadA;
HANDLE hThreadB;
DWORD dwThreadIdA;
DWORD dwThreadIdB;
hThreadA = CreateThread( NULL // 默认安全属性
,
NULL  // 默认堆栈⼤⼩
, ThreadProFuncA // 线程⼊⼝地址
, NULL //传递给线程函数的参数
, 0 // 创建完线程⽴即执⾏
, &dwThreadIdA //线程ID号
);
CloHandle(hThreadA); // 关闭线程句柄
hThreadB = CreateThread( NULL, NULL, ThreadProFuncB, NULL, 0, &dwThreadIdB);
CloHandle(hThreadB); // 关闭线程句柄
system("pau");对账函格式
return 0;
}
DWORD WINAPI ThreadProFuncA(LPVOID lpParam)
{
for(int i = 0; i < 5; i++) {
printf("hello\n");
}
return 0;
}
DWORD WINAPI ThreadProFuncB(LPVOID lpParam)
{
for(int i = 0; i < 5; i++) {
printf("world\n");
}
return 0;
}
运⾏结果
hello
hello
hello
hello价值追求
world
hello
world
world
world
world
请按任意键继续. . .
例程2:创建完线程,通过 ResumeThread  执⾏指定线程,这⾥创建完线程不执⾏
分手后的说说
DWORD WINAPI ThreadProFuncA(LPVOID lpParam);
DWORD WINAPI ThreadProFuncB(LPVOID lpParam);
int main(int argc, char **argv)
{
HANDLE hThreadA;
HANDLE hThreadB;
DWORD dwThreadIdA;
DWORD dwThreadIdB;
hThreadA = CreateThread( NULL // 默认安全属性
, NULL  // 默认堆栈⼤⼩
, ThreadProFuncA // 线程⼊⼝地址
, NULL //传递给线程函数的参数
, CREATE_SUSPENDED  // 线程创建后挂起,直到调⽤ ResumeThread 运⾏
, &dwThreadIdA //线程ID号
);
CloHandle(hThreadA); // 关闭线程句柄
hThreadB = CreateThread( NULL, NULL, ThreadProFuncB, NULL, 0, &dwThreadIdB); CloHandle(hThreadB); // 关闭线程句柄
system("pau");
return 0;
}
DWORD WINAPI ThreadProFuncA(LPVOID lpParam)
{
for(int i = 0; i < 5; i++) {
printf("hello\n");
}
return 0;
}
DWORD WINAPI ThreadProFuncB(LPVOID lpParam)
{
for(int i = 0; i < 5; i++) {
printf("world\n");
}
return 0;
}
运⾏结果
world
world
world
world
world
请按任意键继续. . .
例程3:设置优先级
DWORD WINAPI ThreadProFuncA(LPVOID lpParam);
DWORD WINAPI ThreadProFuncB(LPVOID lpParam);
int main(int argc, char **argv)
火影忍者qq头像
{
HANDLE hThreadA;
HANDLE hThreadB;
DWORD dwThreadIdA;
DWORD dwThreadIdB;
hThreadA = CreateThread( NULL // 默认安全属性
, NULL  // 默认堆栈⼤⼩
, ThreadProFuncA // 线程⼊⼝地址
, NULL //传递给线程函数的参数
, CREATE_SUSPENDED  // 线程创建后挂起,直到调⽤ ResumeThread 运⾏
, &dwThreadIdA //线程ID号
);
SetThreadPriority(hThreadA, THREAD_PRIORITY_LOWEST); // 设置线程A优先级最低ResumeThread(hThreadA); // 线程A执⾏
CloHandle(hThreadA); // 关闭线程句柄
hThreadB = CreateThread( NULL, NULL, ThreadProFuncB, NULL, 0, &dwThreadIdB); CloHandle(hThreadB); // 关闭线程句柄
system("pau");
return 0;银行贷款利率怎么算
}
DWORD WINAPI ThreadProFuncA(LPVOID lpParam)
{
魔方英文
for(int i = 0; i < 5; i++) {
printf("hello\n");
}
return 0;
}
DWORD WINAPI ThreadProFuncB(LPVOID lpParam)
{
for(int i = 0; i < 5; i++) {
printf("world\n");
}
return 0;
}
运⾏结果
hello
hello
hello
world
hello
hello
world
菌类种植
world
world
world
请按任意键继续. . .

本文发布于:2023-05-15 11:52:33,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/899369.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:线程   创建   调度   默认
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图