Один из способов - создать очередь для каждого потока , а функция, которая передает информацию, отвечает за вставку сообщения в очередь каждого потока.
Это похоже на работу очередей сообщений, например, в Windows. Каждый поток, выполняющий операции с графическим интерфейсом, имеет связанную очередь сообщений, независимую от очереди любого другого потока.