1. 程式人生 > >strongswan——線程處理函數

strongswan——線程處理函數

bsp bool 哪些 選擇執行 def cleanup 處理程序 execute 特殊

1. 將函數壓入當前線程的清理處理程序棧中。 每當線程被取消、退出或使用TRUE作為執行參數調用thread_cleanup_pop函數時都會調用回調函數cleanup。

void thread_cleanup_push(thread_cleanup_t cleanup, void *arg);

其中入參cleanup為函數指針,定義如下:

typedef void (*thread_cleanup_t)(void *arg);

2. 從當前線程的清理處理程序棧中刪除棧頂函數,並可以選擇執行它。

void thread_cleanup_pop(bool execute);

3. 將所有註冊的清理處理程序彈出並執行,彈出順序與註冊順序相反。此函數僅用於非常特殊的目的,其中調用者確切地知道已經推送了哪些清理處理程序。對於常規使用,調用者應該精確地知道通過使用thread_cleanup_push()壓入的處理程序數量,並通過調用thread_cleanup_pop()將相同數量的處理程序彈出。

void thread_cleanup_popall();

strongswan——線程處理函數