Mytec
Multi Selector threads in Grizzly 1.5
Default Grizzly Controller configuration uses single Selector thread for handling Channel events, it means OP_ACCEPT and OP_READ events are handled by a single Selector. For sure to process bigger number of concurrent requests - it's not enough, and we may need to spread Channels among several Selector threads.
It's very easy to do in Grizzly - Controller.setReadThreadsCount(threadNum);
It let's main (Controller) Selector thread to process only OP_ACCEPT events, and each accepted Channel will be registered for reading on a different Selector thread, taken from queue. Default Multi Selector threads implementation is working in RoundRobin manner.
Here is example, how to start Grizzly Controller with several Selector threads.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
final ProtocolFilter readFilter = new ReadFilter();
final ProtocolFilter echoFilter = new EchoFilter();
TCPSelectorHandler selectorHandler = new TCPSelectorHandler();
selectorHandler.setPort(PORT);
final Controller controller = new Controller();
controller.setReadThreadsCount(SELECTOR_THREADS_NUM);
controller.setSelectorHandler(selectorHandler);
controller.setProtocolChainInstanceHandler(
new DefaultProtocolChainInstanceHandler(){
public ProtocolChain poll() {
ProtocolChain protocolChain = protocolChains.poll();
if (protocolChain == null){
protocolChain = new DefaultProtocolChain();
protocolChain.addFilter(readFilter);
protocolChain.addFilter(echoFilter);
}
return protocolChain;
}
});
controller.start();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
Posted at 05:24PM Jun 15, 2007 by oleksiys in Grizzly | Comments[5]
Posted by Jean-Francois Arcand's Blog on June 20, 2007 at 07:24 PM CEST #
Posted by Jean-Francois Arcand's Blog on June 21, 2007 at 02:10 AM CEST #
Posted by Jean-Francois Arcand's Blog on June 21, 2007 at 02:11 AM CEST #
Posted by Fay on August 02, 2007 at 10:35 PM CEST #
Posted by Mark on August 03, 2007 at 08:18 PM CEST #