zoukankan      html  css  js  c++  java
  • linux第12天 线程

    今天主要学习了共享内存,信号量的封装,还有线程.

    POSIX线程库
    与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都是以“pthread_”打头的
    要使用这些函数库,要通过引入头文<pthread.h>
    链接这些线程函数库时要使用编译器命令的“-lpthread”选项

    pthread_create函数
    功能:创建一个新的线程,在主线程里调用
    原型
    int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);
    参数
    thread:返回线程ID
    attr:设置线程的属性,attr为NULL表示使用默认属性
    start_routine:是个函数地址,线程启动后要执行的函数
    arg:传给线程启动函数的参数
    返回值:成功返回0;失败返回错误码,而不是设置全局变量errno

    pthread_exit函数
    功能:线程终止,在线程函数里调用,参数代表返回值,用于给主线程传数据,在线程函数里return也一样
    原型
    void pthread_exit(void *value_ptr);
    参数
    value_ptr:value_ptr不要指向一个局部变量, 。
    返回值:无返回值,跟进程一样,线程结束的时候无法返回到它的调用者(自身)

    pthread_join函数
    功能:等待线程结束,在主线程里调用
    原型
    int pthread_join(pthread_t thread, void **value_ptr);
    参数
    thread:线程ID
    value_ptr:它指向一个指针,后者指向线程的返回值

    void *p = NULL;

     pthread_join(tid, &p);这样调用

    返回值:成功返回0;失败返回错误码

    pthread_self函数
    功能:返回线程ID,在线程函数里调用
    原型
    pthread_t pthread_self(void);
    返回值:成功返回0

    pthread_cancel函数
    功能:取消一个执行中的线程
    原型
    int pthread_cancel(pthread_t thread);
    参数
    thread:线程ID
    返回值:成功返回0;失败返回错误码

    posix互斥锁api

    • 互斥锁机制主要包括下面的基本函数。
    • 互斥锁初始化:pthread_mutex_init()
    • 互斥锁上锁:pthread_mutex_lock()
    • 互斥锁判断上锁:pthread_mutex_trylock()
    • 互斥锁解锁:pthread_mutex_unlock()
    • 消除互斥锁:pthread_mutex_destroy()

    创建一个锁

    pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

    pthread_mutex_init(&mutex );

    临界区,同时只有一个线程能在里面运行

    pthread_mutex_unlock(&mutex);

  • 相关阅读:
    JZ-C-01
    C/C++学习笔记
    15、排序:选择类排序和归并排序
    玩转Spring——Spring事务
    玩转Spring——Spring整合JDBC
    玩转Spring——Spring AOP
    玩转Spring——Spring IOC/DI
    Java算法——递归思想
    Java排序算法——堆排序
    Java排序算法——归并排序
  • 原文地址:https://www.cnblogs.com/c-slmax/p/5281301.html
Copyright © 2011-2022 走看看