Dropped the one-thread io loop, switching to one-thread-per-socket.
This is a crucial change of BIRD inside structures which breaks a lot of internal assumptions. Special care must be taken with socket open and close. Before this change, there was one IO loop which chose the sockets to process based on a modified round-robin principle. Now there is one thread for each RX and also for each TX queue. Before this change, the programmer could also rely on implicit rfree() being called on all the sockets on protocol shutdown; now the RX threads have to be cancelled explicitly when shutting a protocol down. From now on, there is also automatic TX flush on every socket if synchronous write fails. This is needed for further unlocking and parallel processing of incoming packets.
Loading
Please sign in to comment