Я хорошо привык полагаться на GHC forkIO
для портативных легких потоков при программировании в Haskell.
Что такое эквивалентные библиотеки для C, которые могут обеспечить такую же масштабируемость и простоту использования?
В частности, мне нужны С-эквиваленты, по крайней мере, следующих двух функций.
forkIO :: IO () -> IO ThreadId
killThread :: ThreadId -> IO ()
Я полагаю, что для моего приложения было бы достаточно, если потоки только включали блокирующие операции, а не принудительно приостанавливались, потому что все потоки часто очень часто блокируются для сетевого ввода-вывода, и я использую только системный вызов splice
, чтобы спросить ядро Linux перемещать данные между сокетами.
Обновление
В этой статье приведены цифры и таблицы, сравнивающие
с результатами в пользу Protothreads. Поскольку я не использовал их, и могут быть и другие библиотеки, мне бы очень хотелось услышать от тех, кто использовал/разработал такие библиотеки.