【发布时间】:2018-04-01 08:26:12
【问题描述】:
我正在使用 ChibiOS RTOS,我有一些问题可能看起来很基本,但有点逃避我。
ChibiOS 有一个函数叫做:
chSysLock();
和
chSysUnlock();
据我了解,这两个函数将分别锁定和解锁内核。
所以我的问题是:
- 锁定内核有什么作用?
- 为什么要锁定内核?
最后,让我们用这个例子:
static void sem_cb(void) {
chSysLock();
chBSemSignalI(&sem_1);
chSysUnlock();
}
这个函数只是为正在等待它的线程发出一个信号量。
所以我的最后一个问题是:
- 锁定内核只是为了发出信号量有什么意义?如果我不这样做,那么 ChibiOS 会抱怨并且没有系统锁就无法编译。
【问题讨论】:
-
“如果我不这样做,那么 ChibiOS 会抱怨并且不会编译”。 :如果它没有编译,那么ChibiOS不可能有“抱怨”——编译器会抱怨:编译器报告了什么?编译器不支持 RTOS,因此不可能抱怨 RTOS 调用的语义——这句话毫无意义。
标签: kernel locking rtos unlock chibios