История изменений
Исправление KivApple, (текущая версия) :
Что касается очередей - я согласен, что можно сделать по mutex'у - отдельный на запись и отдельный на чтение (кольцевой буфер позволяет одновременно читать и писать). Это, кстати, обычно к локам приводить не будет, потому что обычно только кто-то один пишет в очередь и только кто-то один читает. При создании-удалении процессов вообще можно прерывания запрещать, потому что это достаточно редкая операция для МК.
Но вот планировщик (самая часто вызываемая часть ОС) lock-free, ИМХО, сделать можно. Я уже почти написал, но туплю как реализовать lock-free удаление из однонаправленного связанного списка (это по сути suspend задачи). У меня на некоторых тестах всё виснет. Но lock-free алгоритм для однонаправленного списка точно в природе существует.
Исправление KivApple, :
Что касается очередей - я согласен, что можно сделать по mutex'у - отдельный на запись и отдельный на чтение (кольцевой буфер позволяет одновременно читать и писать). Это, кстати, обычно к локам приводить не будет, потому что обычно только кто-то один пишет в очередь и только кто-то один читает. При создании-удалении процессов вообще можно прерывания запрещать, потому что это достаточно редкая операция для МК.
Но вот планировщик (самая часто вызываемая часть ОС) lock-free, ИМХО, сделать можно. Я уже почти написал, но туплю как реализовать lock-free удаление из однонаправленного связанного списка. У меня на некоторых тестах всё виснет. Но lock-free алгоритм для однонаправленного списка точно в природе существует.
Исходная версия KivApple, :
Что касается очередей - я согласен, что можно сделать по mutex'у - отдельный на запись и отдельный на чтение (кольцевой буфер позволяет одновременно читать и писать). При создании-удалении процессов вообще можно прерывания запрещать, потому что это достаточно редкая операция для МК.
Но вот планировщик (самая часто вызываемая часть ОС) lock-free, ИМХО, сделать можно. Я уже почти написал, но туплю как реализовать lock-free удаление из однонаправленного связанного списка. У меня на некоторых тестах всё виснет. Но lock-free алгоритм для однонаправленного списка точно в природе существует.