- 1
- 2
- 3
- 4
void IRQHandler(void)
{
...
WaitSemaphore(semH);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+160
void IRQHandler(void)
{
...
WaitSemaphore(semH);
Из кода для встроенного устройства реального времени.
gegMOPO4 08.02.2011 11:35 # +6
gpr 08.02.2011 12:46 # 0
guest 08.02.2011 13:17 # +1
А как Вы себе представляете ожидание семафора в обработчике прерывания? Вот и говнокод.
gpr 08.02.2011 13:23 # −1
guest 08.02.2011 13:30 # +2
Нет. Ждать их запрещенно. Это сразу блокируется переключение задач (фактически блокируется всё ядро и возможно на длительное время), блокируются прерывания с более низким приоритетом. Более того, если низкоприоритетные прерывания будут заблокированы длительное время - они могут потеряться.
Если ядро одно, то не будет никого, кто мог бы разблокировать это ядро (не считая прерываний с более высоким приоритетом).
gpr 08.02.2011 13:37 # −4
Да и если в данном случае все так как ты описываешь, это не говнокод, а тупо банальная ошибка.
guest 08.02.2011 16:10 # +1
Приведите пример хоть одной, где это не так?
bugmenot 08.02.2011 16:50 # +5
Анонимус 08.02.2011 16:11 # +1
gpr 08.02.2011 16:30 # −3
Анонимус 08.02.2011 16:36 # 0
artureg 08.02.2011 12:48 # +3
Lure Of Chaos 08.02.2011 16:41 # 0