Ответ 1
Взгляните на: http://opensource.mlba-team.de/xdispatch/ Этот проект (и другие сторонние библиотеки) приносит libdispatch на платформы (windows, linux), отличные от macosx
Im ищет многопоточность, и GCD кажется гораздо лучшим вариантом, чем ручное создание решения с помощью pthread.h
и pthreads-win32
. Однако, хотя похоже, что libdispatch
либо работает, либо вскоре начинает работать, но и более новые POSIX-совместимые системы... Я должен спросить, а как же Windows? Каковы шансы переноса libdispatch
на Windows? Каковы препятствия, препятствующие этому?
Если бы это сработало, что мне нужно сделать, чтобы преформировать этот portage?
Изменить: Некоторые вещи, которые я уже знаю, чтобы начать обсуждение:
pthread.h
в пользовательском пространстве libdispatch
на вызовы APR для переносимости? Или, альтернативно, используйте pthreads-win32
Я полагаю... Изменить 1: Я слышал, что это полностью и полностью невозможно, потому что libdispatch
зависит (как-то) от kqueue
, которые не могут быть доступны в Windows... кто-нибудь знает, верно ли это?
Взгляните на: http://opensource.mlba-team.de/xdispatch/ Этот проект (и другие сторонние библиотеки) приносит libdispatch на платформы (windows, linux), отличные от macosx
Windows-эквивалент libdispatch, исходя из моего основного понимания, - это Concurrency Runtime для неуправляемого кода и набор технологий, коллективно известный как Parallel Extensions для управляемого кода. Мне кажется, что GCD очень хорошо сочетается с обоими из них, так как оба абстрактных единицы работы (или "задачи" ) аналогичным образом.
Из небольшого числа исследований выяснилось, что в порту уже есть довольно интересный интерес, но этот порт будет довольно радикальным делом и может оказаться в основном просто другой реализацией API и фактически не разделять значительный код с оригинальной libdispatch. Я видел некоторые предложения по переносу libdispatch на основе Apache Portable Runtime, а не POSIX, который упростил бы кросс-платформу для Windows, но даже это не было бы легким изменением.
Вероятно, это никоим образом не было бы маленьким начинанием.Я думаю, что вместо libdispatch-on-pthreads и pthreads-on-Win32 или libdispatch-on-APR и APR-on-Win32 было бы лучше реализовать libdispatch непосредственно на Win32 API пула потоков. Хорошей новостью является то, что два API достаточно похожи, что вы, вероятно, можете сами сделать порт. Плохая новость заключается в том, что, вероятно, будет много угловых случаев, когда есть небольшие семантические несоответствия, которые затрудняют точное выполнение.