Author: Jeff Garzik 2013-10-04 15:05:29
Published on: 2013-10-04T15:05:29+00:00
In an email chain on October 4th, 2013, Gavin Andresen stated that the RPC code in Bitcoin should be smarter and suggested a simple patch which would make the last rpc thread ignore keepalive and always disconnect. Currently, the HTTP server code paths use blocking I/O which means that all connections and operations are blocking. RPC was multi-threaded to work around this issue. Jeff Garzik tried a multi-threaded approach writing an entire boost::asio skeleton JSON-RPC HTTP server. Despite it being working tested code that uses boost::asio properly, it's messy and requires more lines of code per boost async action. The goal is to make the code truly async I/O, and Jeff believes that a single thread with async I/O is likely sufficient for even heavy uses of RPC, since today it all goes through a big lock anyway.
Updated on: 2023-06-07T17:10:54.693499+00:00