Chinaunix首页 | 论坛 | 博客
  • 博客访问: 295101
  • 博文数量: 3
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2019-06-06 22:08
文章分类
文章存档

2020年(1)

2019年(2)

我的朋友

分类: C/C++

2019-06-17 20:24:10

一、概述
    线程是允许应用程序并发执行多个任务的一种机制。一个进程可以包含多个线程。同一进程中的多个线程可以并发执行,且共享进程的所有资源。
线程相对于进程来说,存在一些优势:
  • 进程间的信息难以共享
  • 调用fork()来创建进程的代价相对较高。
  • 线程之间能够方便、快速地共享信息。只需要将数据复制到共享(全局或堆)变量中即可。不过,要避免出现多个线程试图同时修改同一份信息的情况。
  • 创建线程比创建进程通常要快很多。
二、线程和errno
    在多线程程序中,每个线程都有属于自己的errno。多线程程序能以errno=value的方式对errno赋值。

三、Pthreads函数返回值
    所有Pthreads函数均以返回0表示成功,返回一正值表示失败。这一失败时的返回值,与传统UNIX系统调用置于errno中的值含义相同。多线程程序对errno的每次引用都会带来函数调用的开销,因此,在使用Pthreads函数时多使用一个中间变量,并自己实现函数的诊断。如下所示:

pthread_t tid;
int err;

err = pthread_create(&tid, NULL, func, NULL);
if (err != 0)
{
    printf("create thread failed.\n");
    exit()
}

四、编译Pthreads程序
    在编译程序时,需要加-lpthread选项。





















阅读(2284) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~