线程API

作者: ThalesW | 来源:发表于2020-06-25 16:39 被阅读0次

    1.1线程的创建

    #include <pthread.h>
    int 
    pthread_create(
        pthread_t *             thread,
        const pthread_attr_t *  attr,
        void*                   (*start_routine)(void*),
        void *                  arg);
    

    参数1:指向pthread_t结构类型的指针,利用该结构与线程交互。
    参数2:用于指定该参数可能具有的属性。
    参数3:指示线程在哪个函数(函数名称start_routine)中运行。
    参数4:传递给线程开始执行的函数的参数。

    1.2线程的完成

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

    参数1:指定要等待的线程。
    参数2:得到的返回值。
    线程的返回值不要返回指针,并让它指向线程调用栈上分配的东西。线程函数内的变量分配在栈中,返回后栈会释放该内存。

    1.3锁

    临界区需要通过锁来保护。

    int pthread_mutex_lock(pthread_mutex_t *mutex);
    int pthread_mutex_unlock(pthread_mutex_t *mutex);
    int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);
    

    如果在调用pthread_mutex_lock时没有其它线程保持有锁,线程将获取该锁并进入临界区。如果另一线程保持该锁,那么尝试获取该锁的线程将不会从该调用返回,直到获得该锁。函数三初始化互斥变量。

    1.4条件变量

    线程之间的交互信号。

    int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);
    int pthread_cond_signal(pthread_cond_t *cond);
    

    第一个函数使调用线程进入休眠状态,等待其他线程发出信号,同时会让调用者睡眠时释放锁。

    相关文章

      网友评论

          本文标题:线程API

          本文链接:https://www.haomeiwen.com/subject/hoqsfktx.html