splone / splonebox-client

A client for the splonebox
http://splonebox.io
GNU Lesser General Public License v3.0
6 stars 2 forks source link

implement processes for remote function #8

Closed bontric closed 8 years ago

bontric commented 8 years ago

every remote function should be executed in a separate process

related to #7 and #3

bontric commented 8 years ago

It might be a good idea to use tasklets instead. This will presumably cause less overhead as processes are quite heavy

stze commented 8 years ago

please consider using asynchronous io library libuv for all client io. with that we don't need any thread synchronization (no locks, no semaphores etc), we can stop api calls (#7), and event processes that are needed for remote functions are also provided by the library and can be easily managed via libuv loop. and the best thing, it provides it all async.

check out this neovim uv implementation for details: https://github.com/neovim/python-client/blob/master/neovim/msgpack_rpc/event_loop/uv.py

mkind commented 8 years ago

We'll I am not sure, whether asynchronous IO is really needed in the first place. Threats are needed anyway otherwise it is not really possible to handle API calls like stop or pause.

stze commented 8 years ago

that's not true, check out libuv docs and neovim implementation for details. libuv uses processes for each "child". these processes can be stopped. it's way more efficient and simple than the current implementation or tasklets.

stze commented 8 years ago

We'll I am not sure, whether asynchronous IO is really needed in the first place. Threats are needed anyway otherwise it is not really possible to handle API calls like stop or pause.

thread sync is a real pain an we should avoid using threads

bontric commented 8 years ago

further discussion moved to #23