给定TCP,当IO为非阻塞时,状态设计模式是否用处不大?
在我的TCP应用程序中,只要IO处于阻塞状态,状态设计模式就似乎很有用 我的SwingWorker的doInBackground()可以通过引用一个对象来循环TCP连接中的读、写和接受状态。请参见维基百科对话页面上的示例: 然而,当我将服务器重构为非阻塞IO时,它似乎不再有用了。Select()返回一组准备进行IO的通道,这些通道通过引用一系列if语句中的SelectionKey状态来处理 有人能从经验或理解中确认,当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的关系。仍然非常有用,每个连接都有状态机
select(2)
(或poll(2)
,或epoll(7)
)只需为您提供一种等待多个通道并将事件分派到这些状态机的方法