strongswan のソース コードからスレッドを同期する別の方法を見つけました。スレッドのスケジュール ポリシーを変更してスレッドを同期します( SCHED_FIFO
)。途中で何かメリットあるのmutex
?
コード:
int oldpolicy;
struct sched_param oldparams, params;
pthread_getschedparam(thread_id, &oldpolicy, &oldparams);
params.__sched_priority = sched_get_priority_max(SCHED_FIFO);
pthread_setschedparam(thread_id, SCHED_FIFO, ¶ms);
...
critical section
...
pthread_setschedparam(thread_id, oldpolicy, &oldparams);
PS: strongswan は malloc フックを使用してメモリ リークを検出します。マルチスレッドをサポートするために、この方法を使用してスレッドを同期します。
PPS:彼らはコードを変更したようです。バージョン Strongswan 4.5.0 のそのコード片。