2.3 线程的创建与使用
创建线程在不同操作系统上有着相似但有不尽相同的函数。它们在不同平台下需要相应的编译器的支持。另外,线程间也存在通讯的问题,如在Windows系统,互锁函数家族只能在单值上运行,根本无法使线程进入等待状态;关键代码段只适用于对单个进程中的线程实施同步;程序员可以使用内核对象来实现线程同步。再比如java,为线程间通讯提供了类为PipedInputStream和PipedOutputStream以及PipedReader和PipedWriter的方式。详情请另行查看相应资料。
功能 | Windows接口 | Linux接口[1] |
线程创建 | _beginthreadex/ CreateThread | pthread_create |
线程退出 | _endthreadex | pthread_exit |
设置线程优先级 | SetThreadPriority | pthread_setschedparam |
平台 | Windows | Linux |
编译器 | cl (Visual C++ 6.0 sp5) | gcc 3.4.3 |
线程支持选项 | /MDd, /MD | -pthread |
其它选项 |
| 编译动态链接库 -fpic |
[1] Linux提供由POSIX定义的pthread线程支持接口,包括LinuxThreads(内核<=2.4.20)和NPTL(Native POSIX Threads Library)两套实现。它们和POSIX规范有或多(LinuxThreads)或少(NPTL)的差异。本文使用LinuxThreads说明。Linux线程在核内是以轻量级进程的形式存在的,拥有独立的进程表项,而所有的创建、同步、删除等操作都在核外pthread库中进行。相信随着Linux内核的发展,线程会在内核被实现。