pthread_setschedparam

 1 #include <stdlib.h>
 2 #include <pthread.h>
 3 #include <stdio.h>
 4 #include <sched.h>
 5 void *consumer(void *p)
 6  {
 7           int i;
 8           printf("start (%d)\n", (int)p);
 9          for (i = 0;1; i++)
10         {
11                   //if(i%200 == 10)
12                    printf("<<<<<<<(%d)\n", (int)p);
13
14         }
15 }
16  int main(int argc, char *argv[])
17  {
18          pthread_t  t1, t2, t3;
19          struct sched_param sched3;
20          sched3.__sched_priority = 70;
21
22          pthread_create(&t1, NULL, consumer, (void *)4);
23          pthread_create(&t2, NULL, consumer, (void *)5);
24          pthread_create(&t3, NULL, (consumer), (void *)6);
25         sleep(8);
26         pthread_setschedparam(t3, SCHED_FIFO, &sched3);
27         pthread_join(t1, NULL);
28         pthread_join(t2, NULL);
29         pthread_join(t3, NULL);
30        return 0;
31  }
32 //pthread_setschedparam在多线程开发中经常被使用的,它主要用于设置线程的调用策略和优先级。
33 /* 运行结果:
34 前8秒交替打印 <<<<<<<<<<<<<<<<<<<<<(4)  和<<<<<<<<<<<<<<<<<<<<<(5)
35                 和 <<<<<<<<<<<<<<<<<<<<<(6)
36 8秒以后只打印 <<<<<<<<<<<<<<<<<<<<<(6)
37
38 注意:如果t3线程用sleep()阻塞自己,其它线程将会被调度执行。
39 上面的程序在8秒后主线程(执行main)也不会执行,比如在29行增加一个exit(1),如果主线程会执行到29行,整个程序将结束,但实际上还会一直执行t3线程.主线程不会被执行。*/ 
时间: 2024-10-10 13:13:52

pthread_setschedparam的相关文章

iOS多线程开发(二)---线程管理

线程管理 线程管理包括创建,配置,退出三部分.主要包括创建线程的成本,线程创建,线程属性配置,线程主体入口函数编写,线程中断等 一,线程创建成本 1,为辅助线程分配的堆栈空间大小,便于系统和进程管理,以及为函数参数和局部变量分配空间 A,内核数据结构(kernel data structures)---大约1KB,This memory is used to store the thread data structures and attributes, much of which is all

Pthread-----笔记1

pthread_t:线程ID 转自http://blog.csdn.net/hudashi/article/details/7709413 Posix线程中的线程属性pthread_attr_t主要包括scope属性.detach属性.堆栈地址.堆栈大小.优先级.在pthread_create中,把第二个参数设置为NULL的话,将采用默认的属性配置. pthread_attr_t的主要属性的意义如下: __detachstate,表示新线程是否与进程中其他线程脱离同步, 如果设置为PTHREAD

iOS多线程编程指南(二)线程管理

当应用程序生成一个新的线程的时候,该线程变成应用程序进程空间内的一个实体.每个线程都拥有它自己的执行堆栈,由内核调度独立的运行时间片.一个线程可以和其他线程或其他进程通信,执行I/O操作,甚至执行任何你想要它完成的任务.因为它们处于相同的进程空间,所以一个独立应用程序里面的所有线程共享相同的虚拟内存空间,并且具有和进程相同的访问权限. 一.线程成本 多线程会占用你应用程序(和系统的)的内存使用和性能方面的资源.每个线程都需要分配一定的内核内存和应用程序内存空间的内存.管理你的线程和协调其调度所需

clone函数探究

我们都知道linux中创建新进程是系统调用fork,但实际上fork是clone功能的一部分,clone和fork的主要区别是传递了几个参数.clone隶属于libc,它的意义就是实现线程. 看一下clone函数: int clone(int (*fn)(void * arg), void *stack, int flags, void * arg); fn就是即将创建的线程要执行的函数,stack是线程使用的堆栈. 再来看一下clone和pthread_create的区别:linux中的pth

POSIX API

POSIX标准总体分析 POSIX,全称为可移植性操作系统接口,是一种关于信息技术的IEEE标准.它包括了系统应用程序接口(API),以及实时扩展(C语言). 该标准的目的是定义了标准的基于UNIX操作系统的系统接口和环境来支持源代码级的可移植性.现在,标准主要提供了依赖C语言的一系列标准服务,再将来的版本中,标准将致力于提供基于不同语言的规范. 该标准对核心需求部分定义了一系列任何编程语言都通用的服务,这一部分服务主要从其功能需求方面阐述,而非定义依赖于编程语言的接口.语言规范主要有两部分组成

Cocos2dx中线程优先级

Cocos2dx中线程优先级问题 不论是ios还是android,遇到耗时的任务都要另起线程处理,否则程序不能及时用户的反馈.游戏中如果一圈循环不能在1/frameRate(帧率是30则1/30)秒内完成,就会有掉帧,游戏卡顿.比如,游戏中要解析一个动画json配置,需要60ms,这如果在主线程中搞就掉帧了,那么另再开个线程解析json,解析完了再通知主线程如何?这是可以的,但是考虑一种极端情况,线程切换到json解析线程,直到json解析完成后才切换到主线程,这不是一样掉帧吗!所以理想情况是让

从pthread 到QThread

该文出自:http://www.civilnet.cn/bbs/topicno/78430 使用线程技术进行应用编程的意义在gemfield的文章<从进程到线程>中已经介绍过了,我们就直奔主题:Linux上的线程开发以及Qt对线程的封装(Linux平台部分).Linux上的线程API使用的是pthread库,我们来粗略认识下pthread. 要在程序中使用pthread线程,究竟会用到哪几部分的功能呢? 1.创建线程是必须的吧,pthread_create(): 2.设置线程的属性也是需要的吧

UNIX环境编程学习笔记(27)——多线程编程(二):控制线程属性

lienhua342014-11-09 1 线程属性概括 POSIX 线程的主要属性包括 scope 属性.detach 属性.堆栈地址.堆栈大小.优先级.在头文件 pthread.h 中定义了结构体pthread_attr_t 来记录线程的属性. 在创建线程的函数pthread_create 的第二个参数 attr 就是一个pthread_attr_t结构体的指针,通过该参数,我们可以控制新创建的线程的属性.如果 atrr参数为 NULL,表示创建一个默认属性的新线程. pthread_att

thread_16

#include <stdlib.h> #include <pthread.h> #include <stdio.h> #include <sched.h> #include <sched.h> void *consumer1(void *p) { do{ printf("<<<(%u),%d\n", (unsigned)pthread_self(),1); }while(1); } void *consum