现在的位置: 首页 > 综合 > 正文

Linux 线程调试

2017年12月26日 ⁄ 综合 ⁄ 共 1301字 ⁄ 字号 评论关闭

#include <iostream>
#include <pthread.h>
#include <sched.h>

void * child_thread(void* arg)
{
int policy;
int max_priority, min_priority;
struct sched_param param;
pthread_attr_t attr;

pthread_attr_init(&attr);
pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED);
pthread_attr_getinheritsched(&attr, &policy);

//表示使用在schedpolicy和schedparam属性中显式设置的调度策略和参数
if (policy == PTHREAD_EXPLICIT_SCHED)
printf("Inheritsched:PTHREAD_EXPLICIT_SCHED\n");

//表示新现成将继承创建线程的调度策略和参数
if (policy == PTHREAD_INHERIT_SCHED)
printf("Inheritsched:PTHREAD_INHERIT_SCHED");

pthread_attr_setschedpolicy(&attr, SCHED_RR);
pthread_attr_getschedpolicy(&attr, &policy);

//调度策略可能的值是先进先出
if (policy == SCHED_FIFO)
printf("Schedpolicy:SCHED_FIFO\n");
//轮转法
if (policy == SCHED_RR)
printf("Schedpolicy:SCHED_RR\n");
//其它调试方法
if (policy == SCHED_OTHER)
printf("Schedpolicy:SCHED_OTHER\n");

//最大优先权值
sched_get_priority_max(max_priority);
//最小优先权值
sched_get_priority_min(min_priority);
printf("Max priority:%u\n", max_priority);
printf("Min priority:%u\n", min_priority);

//控制一个优先权值
param.sched_priority
= max_priority;
//设置线程的调度参数
pthread_attr_setschedparam(&attr, &param);
printf("sched_priority:%u\n", param.sched_priority);
pthread_attr_destroy(&attr);
}

int main(int argc, char* argv[])
{
pthread_t
child_thread_id;
pthread_create(&child_thread_id, NULL, child_thread, NULL);
pthread_join(child_thread_id, NULL);
return 0;
}

抱歉!评论已关闭.