Each rock has a client and a server. The sending port is system allocated, but the receiving port is statically allocated (from the command line when the rock is started.)
By using a blocking receive in its own thread, there is no need for synchronisation by semaphores. Thus the receiving server is simple and single threaded.