-
- Не совсем понял. Блокироваться можно по времени, а можно ожидать события. Событие может сигнализироваться из обработчика прерывания. В обновленной test_ct используется отдельный виндовый поток для эмуляции прерываний. Т.е. CThreads крутятся в LightElf(137 знак., 16.11.2015 13:04 - 13:12)
- Не нужно тянуть семафоры, мьютексы и т.п. из полноценной многозадачной ОС. Тебе нужен ровно один примитив -- "событие". Которое или произошло, или нет (бит). По нему и будить (у тебя ж собственно и сделана побудка по указателю на void*) Событие fk0(803 знак., 17.11.2015 12:15)
- Дык, блин. Как сделать критическую секцию на Це? Куча свистоплясок именно потому, что нельзя на Це запретить прерывания, нет такой функции. - LightElf(17.11.2015 15:40)
- Ввести понятие "порт". Как у всех и делается. Если для портирования нужна только функция запрещения прерывания, то и говорить не о чём. - =AlexD=(17.11.2015 15:55)
- Это не спортивно. Будет просто еще один, тысяча первый шедулер, ничем не лучше остальной тысячи. Фишка именно в почти абсолютной портабельности (кроме разве что 8051). Если ничего не случится, в выходные проведу мегатестирование на разных процах. - LightElf(17.11.2015 16:06)
- Ввести понятие "порт". Как у всех и делается. Если для портирования нужна только функция запрещения прерывания, то и говорить не о чём. - =AlexD=(17.11.2015 15:55)
- Самое главное. Для построения чего-то наподобии libevent нужен какой-то аналог select или WaitForMultipleEvents: т.е. механизм ожидания множества событий. Иначе вся твоя супер-ос разваливается на несколько десятков биглупов, и каждый в своём fk0(471 знак., 17.11.2015 12:22)
- conditional variable позволяют создать любой другой объект синхронизации - =AlexD=(17.11.2015 13:00)
- Дык, блин. Как сделать критическую секцию на Це? Куча свистоплясок именно потому, что нельзя на Це запретить прерывания, нет такой функции. - LightElf(17.11.2015 15:40)
- система приоритетов тоже может понадобиться - RED_DRAGON(17.11.2015 11:51)
- Не нужно тянуть семафоры, мьютексы и т.п. из полноценной многозадачной ОС. Тебе нужен ровно один примитив -- "событие". Которое или произошло, или нет (бит). По нему и будить (у тебя ж собственно и сделана побудка по указателю на void*) Событие fk0(803 знак., 17.11.2015 12:15)
- Не совсем понял. Блокироваться можно по времени, а можно ожидать события. Событие может сигнализироваться из обработчика прерывания. В обновленной test_ct используется отдельный виндовый поток для эмуляции прерываний. Т.е. CThreads крутятся в LightElf(137 знак., 16.11.2015 13:04 - 13:12)