进程、线程

  1. 进程vs. 线程

线程的划分尺度小于进程,使得多线程程序的并发性高。

进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

1.1定义方面:进程是程序在某个数据集合上的一次运行活动;线程是进程中的一个执行路径。

1.2角色方面:在支持线程机制的系统中,进程是系统资源分配的单位,线程是系统调度的单位。

1.3资源共享方面:进程之间不能共享资源,而线程共享所在进程的地址空间和其它资源。同时线程还有自己的栈和栈指针,程序计数器等寄存器。

1.4独立性方面:进程有自己独立的地址空间,而线程没有,线程必须依赖于进程而存在。

 

2. windows 线程、进程同步

2.1临界区

EnterCriticalSection/LeaveCriticalSection只能是线程

2.2   事件

CreateEvent/OpenEvent/SetEvent/ResetEvent/PulseEvent可以用于进程

2.3   信号量

CreateSemaphore/ReleaseSemaphore/OpenSemaphore可以用于进程

2.4   互斥量

CreateMute/OpenMutex/ReleaseMutex可以用于进程

 

3. Unix线程、进程同步

3.1 互斥锁

pthread_mutex_init/pthread_mutex_lock/pthread_mutex_destroy/phread_mutex_unlock

3.2   条件变量

pthread_cond_init/pthread_cond_wait/pthread_cond_timewait/pthread_cond_destroy/

pthread_cond_signal/pthread_cond_broadcast

3.3   信号量

sem_init/sem_wait/sem_post/sem_destroy

3.4   文件加锁/记录锁

 

4. 进程间通信

 

posted on 2017-02-19 17:06  随性随行  阅读(116)  评论(0编辑  收藏  举报