打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
简单的多线程编程之获得线程参数(YC)
简单的多线程编程之获得线程参数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>

void *test_func(void *arg);

char msg[] = "hello test";
int thread_finish = 0;

int main(int argc, char argv[])
{
    pthread_t thread_a;
    int ret,state;
    int policy;
    pthread_attr_t attr;

    ret = pthread_attr_init(&attr);
    if(ret!=0) {
        printf("attr init fail\n");
        return -1;
    }

    ret = pthread_attr_getdetachstate(&attr,&state);
    if(ret==-1) {
        printf("get detach state fail\n");
        return -1;
    }

    else printf("The default detachstate is %d\n",state);

    ret = pthread_attr_getschedpolicy(&attr,&policy);
    if(ret==-1) {
        printf("get policy fail\n");
        return -1;
    }

    else printf("The default policy is %d\n",policy);

    ret = pthread_create(&thread_a,&attr,test_func,(void *) msg);
    if(ret!=0) {
        printf("Thread create fail\n");
        return -1;
    }

    while(!thread_finish) {
        printf("Waiting for thread finish\n");
        sleep(1);
    }

    printf("The created thread finished \n");
    return 0;
}


void *test_func(void *arg)
{
    int tid=pthread_self();
    printf("The new created thread %u is runing\n",tid);
    printf("The msg:%s\n",(char *)arg);
//    sleep(1);
    printf("The new created thread is ready to finish\n");
    thread_finish = 1;
    pthread_exit(NULL);
}

编译:gcc thread_simple.c -o ts -lpthread
运行结果:


一些参数获得与设置函数:
thread ID:
pthread_self()
线程独立或者可连接状态detachstate:
pthread_attr_getdetachstate(&attr,&state);
pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
或者pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_JOINABLE);(默认)
获取设置栈stack大小:
pthread_attr_getstacksize(&attr,&size);
pthread_attr_setstacksize(&attr,&size);
获取设置调度策略:
pthread_attr_getshedpolicy(&attr,&policy);
pthread_attr_setshedpolicy(&attr,&policy);
获取设置调度策略参数:
pthread_attr_getshedparam(&attr,&param);
pthread_attr_setshedparam(&attr,&param);
其实就是设置优先级
struct sched_param param
param.sched_priority=-10;
pthread_attr_setshedparam(&attr,&param);

以上成功均返回0,不成功返回错误码。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
线程的简单定义与使用实例
实时和非实时调度策略测试总结
Linux 线程优先级
Linux下C语言的多线程编程学习
UNIX环境编程学习笔记(27)
如何监控各个线程的资源占用情况?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服