// 原始代碼
/* gVrrpInstance.sem = OsixCreateBSem(OSIX_SEM_Q_PRIORITY, OSIX_SEM_FULL); */
gVrrpInstance.sem = OsixCreateMSem(OSIX_SEM_Q_FIFO | OSIX_SEM_DELETE_SAFE);
if (gVrrpInstance.sem == NULL)
{printf("[VRRP]:vrrp init error, failed to create vrrp global sem.\r\n");goto ERROR_RETURN;
}
?? 一、信號量作用
信號量用于:
-
控制多線程/中斷對共享資源的訪問。
-
VRRP 模塊可能有多個線程:
-
定時器線程
-
socket 接收線程
-
CLI 或配置下發線程
-
-
全局變量(如
gVrrpInstance.operUsedTbl
、avl樹
)是共享資源,需加鎖防止競態條件。
二、OsixCreateMSem 是什么?
這是平臺層 OS 適配接口的