多线程服务器端的实现

1.单CPU系统中如何同时执行多个进程?请解释该过程中发生的上下文切换。

答:只有1个CPU(CPU的运算设备CORE)的系统中不是也可以同时运行多个进程吗?只是因为系统将CPU时间分成了多个微小的块后分配给了多个进程。为了分时使用CPU,需要“上下文切换”的过程。

上下文切换:如果运行进程A后需要紧接着运行进程B,就应该将进程A的相关信息移出内存,并读入进程B的相关信息,这就是上下文切换。

2.为何线程上下文切换更快?线程间数据交换为何不需要类似IPC的特别技术?

答:(1)因为线程上下文切换不需要切换数据区和堆。(2)可以利用数据区和堆交换数据

3.请从执行流角度说明进程和线程的区别。

答:如果说进程在操作系统内部生成多个执行流,那么线程就在同一进程内部创建多条执行流,因此,操作系统,进程,线程之间的关系可以通过图来表示(图略)

4.请说明完全销毁Linux线程的2种方法。

答:

方法一:利用pthread_join()函数。
       
#include <pthread.h>
int pthread_join(pthread_t thread, void **retval);
        参数:
thread是要等待的线程的ID。
retval是一个二级指针,指向线程函数的返回值(线程函数返回void*)

        返回值:
如果函数执行成功返回0,否则会返回一个错误码。

方法二:利用pthread_detach()函数
        其函数原型如下:
#include <pthread.h>
int pthread_detach(pthread_t thread);


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值