zoukankan      html  css  js  c++  java
  • 多线程程序设计

    1、基本概念

    a、线程就是“轻量级”的进程

    b、线程与创建它的进程共享代码段和数据段

    c、线程拥有自己的独立的栈。

    2、函数学习

    1)创建线程

    函数名:pthread_create

    函数原型:Int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(*start_routine)(void *),void *arg);

    函数功能:在调用进程当中去创建新的线程

    所属头文件:<pthread.h>特别注意:编译时必须使用gcc –lpthread

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

    参数说明:Thread:新创建的线程的id

    Attr:待创建线程的属性,一般为空

    Start_routine:指定线程要执行的函数(线程的入口函数)

    Arg:线程入口函数的参数,可以为空。

    2)等待线程结束

    函数名:Pthread_join

    函数原型:Int pthread_join(pthread_t thread,void **retval);

    函数功能:用于等待线程结束

    所属头文件:<pthread.h>特别注意:同样编译时必须使用gcc –lpthread

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

    参数说明:Thread:要等待结束的线程的id

    Retval:用于保存线程退出时的状态,一般采用空,不保存。

    3)退出线程(不能使用exit退出线程,如果使用的话,会使创建线程的进程也退出)

    函数名:Pthread_exit

    函数原型:Void pthread_exit(void *retval);

    函数功能:结束线程

    所属头文件:<pthread.h>特别注意:同样编译时必须使用gcc –lpthread

    返回值:返回为空 

    参数说明:Retval:用于保存返回值

    4)线程互斥

    在实际应用中,多个线程往往会访问同一数据或资源,为避免线程之间相互影响,需引入线程互斥机制,而互斥锁是互斥机制中的一种。

    1、 初始化互斥锁

    Pthread_mutex_init

    作用:用来初始化互斥锁

    mutex:初始化互斥锁的指针。

    Attr:初始化互斥锁属性

    返回值:成功:0.失败:返回:错误的编码。

    2、 获取互斥锁

    Pthread_mutex_lock

    作用:用于锁住互斥锁

    Mutex:用于指明要锁住的互斥锁。

    返回值:成功:0.失败:返回:错误的编码。

    3.释放互斥锁

    Pthread_mutex_unlock

    作用:用于解除互斥锁

    Mutex:用于指明要解除的互斥锁

    返回值:成功:0.失败:返回:错误的编码。

    注意:祖先进程结束,那么子孙线程会结束。而祖先进程结束,子孙进程不会结束。

    实例:让A进程创建两个线程A1和A2来做任务

    thread.c

  • 相关阅读:
    伙伴宿舍管理系统(源码下载)
    清空SQL数据库日志
    indexOf(String.indexOf 方法)
    C#实现QQ助手(登录QQ,发消息,查任意QQ资料)附源码下载
    C#cookie自动获取工具发布
    winform中怎么动态修改窗体的大小
    IIS Rewrite 下载与配置
    HTML代码转JS|C#字符串工具(附源代码)
    FTPHelper-FTP帮助类,常用操作方法
    c# 怎么动态修改webservice的地址和端口 动态修改配置文
  • 原文地址:https://www.cnblogs.com/gary-guo/p/5581936.html
Copyright © 2011-2022 走看看