http://www.cnblogs.com/kuliuheng/p/4063892.html
前面两篇文章都讲述了Linux环境下的多线程编程基础知识,也附带了典型实例。本文主要比较一下Linux环境与Windows环境下的多线程编程区别。
看待技术问题要瞄准其本质,不管是WIN32、Linux还是VxWorks,其涉及到多线程的部分都是那些内容,无非就是线程控制和线程通信,它们的许多函数只是名称不同,其实质含义是等价的,下面我们来列个三大操作系统共同点详细表单:
| 事项 | WIN32 | Linux | VxWorks |
| 线程创建 | CreateThread | pthread_create | taskSpawn |
| 线程终止 | 执行完成后退出; 线程自身调用ExitThread函数即终止自己; 被其他线程调用函数TerminateThread函数 | 执行完成后退出; 由线程本身调用pthread_exit 退出; 被其他线程调用函数pthread_cance终止 | 执行完成后退出; 由线程本身调用exit退出; 被其他线程调用函数taskDelete终止 |
| 获取线程ID | GetCurrentThreadId | pthread_self | taskIdSelf |
| 创建互斥 | CreateMutex | pthread_mutex_init | semMCreate |
| 获取互斥 | WaitForSingleObject、WaitForMultipleObjects | pthread_mutex_lock | semTake |
| 释放互斥 | ReleaseMutex | phtread_mutex_unlock | semGive |
| 创建信号量 | CreateSemaphore | sem_init | semBCreate、semCCreate |
| 等待信号量 | WaitForSingleObject | sem_wait | semTake |
| 释放信号量 | ReleaseSemaphore | sem_post | semGive |
本文对比了Linux、Windows及VxWorks环境下多线程编程的主要差异,包括线程创建、终止、获取线程ID、互斥量及信号量操作等方面,并强调了不同操作系统中这些功能的本质相似性。



942

被折叠的 条评论
为什么被折叠?



