Controlling Multi Thread Execution using Single Thread Event Loop
Ratnesh Prasad Srivastava, G. C. Nandi · 2017
Programming language of today does not have concurrency semantics and the only way of developing concurrency is to use multithread based request/response architecture. This model of concurrency produces non deterministic nature of execution and leads issues of deadlock, race conditions and synchronization further leads problem of managing locks. We decided to use single threaded non blocking asynchronous communication as used in Node.js[1]. Actor[2][3][4] model uses non blocking asynchronous communication and event loop ensures single threaded model of control of execution to process one message at a time. Actors communicate by communication passing style using callback ( a mechanism of using function inside a function) has issues of Inversion of control or callback hell. So we decided to use Promise[5] a monad[6][7] as a return type of asynchronous communication. All the concurrent execution models Erlang[8], Salsa[9], Scala[10] developed in past supports thread based deployment model and does not abstract invocation from execution[8]. We support design by contract or programming through interfaces by developing a promise based concurrent abstraction framework. Using this abstraction we successfully integrated the components and designed the application of robotics subsumption model. Finally we concluded that promise based asynchronous communication is faster and takes less time than synchronous and callback based asynchronous communication.