• 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);

  • 相关阅读:
    阿里云ssh断开处理办法
    OSSIM安装使用教程(OSSIM-5.6.5)
    MySQL字符串列与整数比较
    Linux获取so/ko文件版本号教程
    Linux服务器后门自动化查杀教程
    最强半自动化抓鸡工具打造思路
    渗透测试报告中的那些名词解释
    ELK+MySQL出现大量重复记录问题处理
    Python3+SQLAlchemy不使用字段名获取主键值教程
    Python3+SQLAlchemy+Sqlite3实现ORM教程
  • 原文地址:https://www.cnblogs.com/c-slmax/p/5281301.html
Copyright © 2020-2023  润新知