zoukankan      html  css  js  c++  java
  • 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 反射机制 ( Java Reflection Mechanism )
    Excel&合并单元格内容无效
    UNIX环境高级编程(19-伪终端)
    UNIX环境高级编程(18-终端I/O)
    UNIX环境高级编程(15-进程间通信)
    UNIX环境高级编程(14-高级I/O)
    UNIX环境高级编程(13-守护进程)
    UNIX环境高级编程(12-线程控制)
    UNIX环境高级编程(11-线程)
    C专家编程(4)
  • 原文地址:https://www.cnblogs.com/fog2012/p/5856475.html
Copyright © 2011-2022 走看看