• PThread 学习笔记


    POSIX 线程,也被称为Pthreads,是一个线程的POSIX标准;

    pthread.h

    int pthread_create(pthread_t * thread,
    pthread_attr_t const *attr,
    void *(*start_routine)(void*),
    void *arg);
    thread: 新线程句柄
    attr: 新线程属性
    start_routine: 线程启动程序
    arg:线程启动程序参数

    int pthread_join(pthread_t thread, void **ret_val);

    thread: 从pthread_create 返回的句柄
    ret_val: 获取返回值


    互斥锁
    1、初始化互斥锁
    int pthread_mutex_init(pthread_mutex_t * mutex, const pthread_mutexattr_t *attr);
    mutex: 一个指向要初始化的互斥变量的指针
    attr: 一个指向为互斥所定义属性的结构体
    默认不提供attr可以使用:mutex = PTHERAD_MUTEX_INITIALIZER;

    2、锁定互斥锁
    int pthread_mutex_lock(pthread_mutex_t *mutex);

    3、解锁互斥锁
    int pthread_mutex_unlock(pthread_mutex_t *mutex);

    4、销毁互斥锁
    int pthread_mutex_destroy(pthread_mutex_t *mutex);

    信号量
    semaphore.h

    1、初始化信号量
    extern int sem_init(sem_t *sem, int pshared, unsigned int value);
    sem 要初始化的信号量指针;
    pshared 共享标志;
    value 初始值;

    2、锁定信号量
    extern int sem_wait(sem_t *sem);

    3、解锁信号量
    extern int sem_post(sem_t *sem);

    4、销毁信号量
    extern int sem_destroy(sem_t *sem);

    POSIX线程调度策略
    sched.h
    SCHED_FIFO:先进先出
    SCHED_RR:循环轮转调度
    1、通过设置pthread_attr_t的sched_policy域在pthread_create时定义
    2、在运行时定义:
    int pthread_setschedparam(pthread_t thid, int poilcy, struct sched_param const *param);

    POSIX线程优先级
    1、通过设置pthread_attr_t的sched_prority域在pthread_create时定义
    2、在运行时定义:
    pthread_setschedparam 的sched_param结构体中提供优先级

    优先级的最大值和最小值根据调度策略而定,可以使用sched_get_priority_max和sched_get_priority_min获取

     参考:《Android C++高级编程》

  • 相关阅读:
    ArrayList的subList方法
    easyui-datagrid 的loader属性用法
    easyui-datagrid 编辑模式详解
    C++归并排序总结
    2016阿里巴巴笔试题
    leetCode(38):Lowest Common Ancestor of a Binary Search Tree
    Codeforces Round #271 (Div. 2) 解题报告
    Android平台Camera实时滤镜实现方法探讨(九)--磨皮算法探讨(一)
    Docker部署JavaWeb项目实战
    广东省知名P2P平台资料
  • 原文地址:https://www.cnblogs.com/fog2012/p/5856475.html
Copyright © 2020-2023  润新知