Может ли Grand Central Dispatch (`libdispatch`) когда-либо быть доступным в Windows?

Im ищет многопоточность, и GCD кажется гораздо лучшим вариантом, чем ручное создание решения с помощью pthread.h и pthreads-win32. Однако, хотя похоже, что libdispatch либо работает, либо вскоре начинает работать, но и более новые POSIX-совместимые системы... Я должен спросить, а как же Windows? Каковы шансы переноса libdispatch на Windows? Каковы препятствия, препятствующие этому?

Если бы это сработало, что мне нужно сделать, чтобы преформировать этот portage?

Изменить: Некоторые вещи, которые я уже знаю, чтобы начать обсуждение:

  • Нам нужен блок-совместимый компилятор, который будет компилироваться в Windows, нет? Будет ли PLBlocks обработать это?
  • Можно ли использовать LLVM блокировать время выполнения?
  • Невозможно заменить все зависимости pthread.h в пользовательском пространстве libdispatch на вызовы APR для переносимости? Или, альтернативно, используйте pthreads-win32 Я полагаю...

Изменить 1: Я слышал, что это полностью и полностью невозможно, потому что libdispatch зависит (как-то) от kqueue, которые не могут быть доступны в Windows... кто-нибудь знает, верно ли это?

Ответы

Ответ 1

Взгляните на: http://opensource.mlba-team.de/xdispatch/ Этот проект (и другие сторонние библиотеки) приносит libdispatch на платформы (windows, linux), отличные от macosx

Ответ 3

Windows-эквивалент libdispatch, исходя из моего основного понимания, - это Concurrency Runtime для неуправляемого кода и набор технологий, коллективно известный как Parallel Extensions для управляемого кода. Мне кажется, что GCD очень хорошо сочетается с обоими из них, так как оба абстрактных единицы работы (или "задачи" ) аналогичным образом.

Ответ 4

Из небольшого числа исследований выяснилось, что в порту уже есть довольно интересный интерес, но этот порт будет довольно радикальным делом и может оказаться в основном просто другой реализацией API и фактически не разделять значительный код с оригинальной libdispatch. Я видел некоторые предложения по переносу libdispatch на основе Apache Portable Runtime, а не POSIX, который упростил бы кросс-платформу для Windows, но даже это не было бы легким изменением.

Вероятно, это никоим образом не было бы маленьким начинанием.

Ответ 5

Я думаю, что вместо libdispatch-on-pthreads и pthreads-on-Win32 или libdispatch-on-APR и APR-on-Win32 было бы лучше реализовать libdispatch непосредственно на Win32 API пула потоков. Хорошей новостью является то, что два API достаточно похожи, что вы, вероятно, можете сами сделать порт. Плохая новость заключается в том, что, вероятно, будет много угловых случаев, когда есть небольшие семантические несоответствия, которые затрудняют точное выполнение.