给定TCP,当IO为非阻塞时,状态设计模式是否用处不大?

给定TCP,当IO为非阻塞时,状态设计模式是否用处不大?,tcp,nonblocking,swingworker,state-pattern,Tcp,Nonblocking,Swingworker,State Pattern,在我的TCP应用程序中,只要IO处于阻塞状态,状态设计模式就似乎很有用 我的SwingWorker的doInBackground()可以通过引用一个对象来循环TCP连接中的读、写和接受状态。请参见维基百科对话页面上的示例: 然而,当我将服务器重构为非阻塞IO时,它似乎不再有用了。Select()返回一组准备进行IO的通道,这些通道通过引用一系列if语句中的SelectionKey状态来处理 有人能从经验或理解中确认,当IO是非阻塞时,状态设计模式是否仍然有用 我问这个问题是因为我不确定我是否正确

在我的TCP应用程序中,只要IO处于阻塞状态,状态设计模式就似乎很有用

我的SwingWorker的doInBackground()可以通过引用一个对象来循环TCP连接中的读、写和接受状态。请参见维基百科对话页面上的示例:

然而,当我将服务器重构为非阻塞IO时,它似乎不再有用了。Select()返回一组准备进行IO的通道,这些通道通过引用一系列if语句中的SelectionKey状态来处理

有人能从经验或理解中确认,当IO是非阻塞时,状态设计模式是否仍然有用


我问这个问题是因为我不确定我是否正确掌握了状态设计模式和TCP的关系。

仍然非常有用,每个连接都有状态机
select(2)
(或
poll(2)
,或
epoll(7)
)只需为您提供一种等待多个通道并将事件分派到这些状态机的方法