• 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++高级编程》

  • 相关阅读:
    Java的HttpServletRequest
    Java的用户登录计数功能
    JAVA-DATE
    正则表达式
    Java-JDBC(2)
    Java-JDBC(1)
    String类
    java的多态和构造方法
    Java的封装 this关键字 继承
    java抽象类与接口
  • 原文地址:https://www.cnblogs.com/fog2012/p/5856475.html
Copyright © 2020-2023  润新知