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

  • 相关阅读:
    【题解】NOIP2016换教室
    【题解】平面最近点对(加强版)
    [atcoder002E] Candy Piles [博弈论]
    [AGC002D] Stamp Rally [并查集+整体二分]
    [ACG001E] BBQ hard [dp]
    [BJOI2006][bzoj1001] 狼抓兔子 [最小割]
    [usaco jan 09] 安全路径 travel [最短路径树]
    [usaco jan 09] 气象牛 baric [dp]
    [poj1741] tree [点分治]
    [NOI2009] 植物大战僵尸 [网络流]
  • 原文地址:https://www.cnblogs.com/fog2012/p/5856475.html
Copyright © 2011-2022 走看看