2017-01-10 4 views
1

Я пытаюсь использовать привязку libnm NetworkManager из многопоточной программы. Безопасна ли libnm? Я не мог найти никакой информации об этом.NetworkManager libnm thread security

ответ

0

libnm написан с использованием glib и gobject. Хотя они явно не упоминают об этом в своем документе, в общем, все, что использует glib, работает на the main event loop и ожидает, что API будет вызван только в цикле основного события (то есть: в потоке, на котором выполняется цикл событий) ,

Glib сам, однако, является потокобезопасным в целом или обеспечивает способы обеспечения безопасности резьбы. Например, чтобы подключиться к сигналу libnm, вы можете использовать g_signal_connect из любого потока; однако обработчик сигнала, который вы предоставляете, будет вызываться в потоке, выполняющем основной цикл. Кроме того, вы можете использовать что-то вроде g_idle_add из любого потока, чтобы запланировать функцию, вызываемую из основного цикла событий.

Вы также можете использовать библиотеку GTask, чтобы помочь вам с нарезкой в ​​glib. Thre - это дополнительная информация о Glib main context here.