zoukankan      html  css  js  c++  java
  • linux线程

    apue第十一章、十二章详细介绍线程。

    关于线程的头文件:

    #include <pthread.h>

    关于线程的函数:

    pthread_self() ,    //获取自己的线程ID

    pthread_create(),   //创建新线程,参数自己去翻

    pthread_exit(),    //结束线程

    pthread_join(),  //等待某个线程的结束,阻塞模式,当被等待的线程调用pthread_exit()时,此函数才返回。

    函数原型:extern int pthread_join __P ((pthread_t __th, void **__thread_return));

    注意:第一个参数为被等待的线程ID,第二个参数将返回被等待的线程执行pthread_exit((void* arg))时的参数arg,然后被等待的线程执行了pthread_exit()后,就会释放该线程的所有资源,所以该变量不能为被等待线程的局部变量,不然会内存越界。详见下面例子。

    注意:pthread_create()有可能在g++下编译不过,需要带上线程的一个编译库文件,比如: g++ hello.cpp -lpthread

    如果在codeblocks上需要添加链接库:

    Settings->Global compiler settings->Linker settings->add.....

    线程库文件一般在/usr/lib/libpthread.so , 如果没有就查找下:find / -name 'libpthr*' 

    如果查找不到就用root账户:apt-get install libpthread(名字可能不对)

    类型:

    进程的类型是pid_t , int

    线程的类型是pthread_t , unsigned long int

    线程终止:

    详见apue第十一章,

    如果进程中任意一个线程调用了exit,_Exit,_exit该进程就会终止~!!!

    单个线程终止有三种方法:

    1>从创建线程的回调函数中直接return , 也就是直接从启动例程中返回,返回值是线程的退出码。

    2>线程可以被同一进程中的其他线程取消

    2>线程调用pthread_exit

  • 相关阅读:
    Rectangle Area
    【 2013 Multi-University Training Contest 8 】
    【 2013 Multi-University Training Contest 7 】
    【 2013 Multi-University Training Contest 6 】
    【 2013 Multi-University Training Contest 5 】
    【 2013 Multi-University Training Contest 4 】
    【 2013 Multi-University Training Contest 3 】
    【 2013 Multi-University Training Contest 2 】
    【 2013 Multi-University Training Contest 1 】
    GLConsole的编译和使用
  • 原文地址:https://www.cnblogs.com/alazalazalaz/p/4376722.html
Copyright © 2011-2022 走看看