简述在使用同步原语时,发送者在消息发送完成之前为何不能使用缓冲区,应如何解决
这一问题。
使用同步原语发送消息时,在消息实际发送完成之前,调用进程便一直处于阻塞状态。这段时间不可能使用缓冲区。倘若发送进程在消息发送之前,即在消息发送期间使用或修改原来的缓冲区,将会造成错误。 为了解决这一问题,应采用异步原语,其方法有: (1)采用带拷贝的非阻塞原语,即让内核把消息拷贝到内核缓冲区,允许调用进程继续运行。 (2)带中断的非阻塞发送,即当消息发送完成后,中断发送进程,通知发送进程此时缓冲区可用。
简述在使用同步原语时,发送者在消息发送完成之前为何不能使用缓冲区,应如何解决
这一问题。
使用同步原语发送消息时,在消息实际发送完成之前,调用进程便一直处于阻塞状态。这段时间不可能使用缓冲区。倘若发送进程在消息发送之前,即在消息发送期间使用或修改原来的缓冲区,将会造成错误。 为了解决这一问题,应采用异步原语,其方法有: (1)采用带拷贝的非阻塞原语,即让内核把消息拷贝到内核缓冲区,允许调用进程继续运行。 (2)带中断的非阻塞发送,即当消息发送完成后,中断发送进程,通知发送进程此时缓冲区可用。