线程(一)概念、创建、标识、终止、连接


概念

  • 使用多线程在做串行任务时,需要阻塞。

线程比进程有优势的地方

  • 同一个进程的多个线程可以并发执行

进程 VS 线程

进程堆栈

线程共享的资源属性

线程数据类型

线程标识

  • 进程ID是唯一的,但线程ID只有在所属的进程上下文才有意义。

对两个线程ID进行比较。

获取自身线程ID


判断两个线程ID是否相同

线程池工作任务


线程创建



#include 
#include 
#include 
#include    // exit()

pthread_t ntid;

void printids(const char *s)
{
    pid_t pid;
    pthread_t tid;

    pid = getpid();
    tid = pthread_self();
    printf("%s pid:%lu, tid:%lu.\n", s, (unsigned long)pid, (unsigned long)tid);
}

void * thr_fn(void *arg)
{
    printids("new  thread:");
    return ((void *)0);
}
int main(void)
{
    int err;

    err = pthread_create(&ntid, NULL, thr_fn, NULL);
    if (err != 0)   // 1表示失败
    {
        //err_exit(err, "error");
        exit(1);
    }
    printids("main thread:");
    sleep(1);
    return 0;
}

线程终止的方法

pthread_exit


pthread_join