Вы можете получить доступ к механизмам многопоточности POSIX в Swift. У меня есть несколько примеров работы с C в этом проекте и this в другом хобби-проекте. Надеюсь, они будут вам полезны.
При работе с такими вещами, как pthread_create
, вы захотите передать либо функцию Swift, либо замыкание в качестве аргумента указателя функции. Я попытался перейти от Swift => C и, имея C, запустить поток с помощью функции Swift через @_cdecl
, не смог заставить его работать. Возможно, это возможно, но из-за того, как я все настроил, в данном случае я не смог этого добиться. способ вернуться. Обычно это делается с помощью void*
в качестве указателя контекста. Из Swift вы, вероятно, захотите передать UnsafePointer
, которым вы управляете, или использовать Unmanaged<T>
, чтобы напрямую передать экземпляр класса, который у вас есть, в C и обратно в Swift.