使用Socket时的阻塞工作方式和非阻塞工作方式有什么区别

发布于2022-06-24 22:03:07

TCP,UDP通信方面的知识

2个回答
admin
网友回答2022-06-24
阻塞模式和非阻塞模式的主要区别在于无请求来到时,阻塞模式会一直停在接收函数即accep函数,直到有请求到来才会继续向下进行处理。而非阻塞模式下,运行接收函数,如果有请求,则会接收请求,如果无请求,会返回一个负值,并继续向下运行。 一般来说,使用阻塞模式的程序比较多,因为阻塞模式是由内核保障等待请求的,当他阻塞时不占用系统资源,而非阻塞模式需要我们人工轮询,占用资源较多。另外,阻塞模式可以使用select函数设置超时时间,具体可以参考相关书籍。
admin
网友回答2022-06-24
所谓非阻塞模式就是,当主线程做一个操作的时候不会阻塞,而是可以继续往下执行别的代码。比如说如果你主线程用socket发送一段数据,这是需要一定的时间的,这个时候你的主线程就被阻塞了,必须等发送完了才能执行其它的代码。而假如你把这个发送的操作交给另外的一个线程去做,那么主线程就可以继续干别的了。所以说在要想做到非阻塞,基本上就是用多线程去实现了

回到
顶部