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

  • 相关阅读:
    项目总结1--技术
    基于MFC的Opengl实现动画
    vs2010 MFC Opengl实现
    设计模式-状态模式
    设计模式-访问者模式
    设计模式-责任链模式
    设计模式-中介者模式
    设计模式-命令模式
    设计模式-备忘录模式
    设计模式-观察者模式
  • 原文地址:https://www.cnblogs.com/fog2012/p/5856475.html
Copyright © 2011-2022 走看看