一、概述
线程是允许应用程序并发执行多个任务的一种机制。一个进程可以包含多个线程。同一进程中的多个线程可以并发执行,且共享进程的所有资源。
线程相对于进程来说,存在一些优势:
-
进程间的信息难以共享
-
调用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选项。
阅读(2243) | 评论(0) | 转发(0) |