Центральный вокзал мог Диспетчеризировать ('libdispatch') когда-нибудь быть сделанным доступным в Windows?

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

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

Править: Некоторые вещи я уже знаю, для запущения обсуждения:

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

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

16
задан Gabe 2 January 2014 в 13:50
поделиться

3 ответа

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

5
ответ дан 30 November 2019 в 22:02
поделиться

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

1
ответ дан 30 November 2019 в 22:02
поделиться

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

Скорее всего, это будет отнюдь не маленькое мероприятие.

1
ответ дан 30 November 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: