Domanda

sto cercando in multithreading, e GCD sembra un molto migliore opzione che scrivere manualmente una soluzione che utilizza pthread.h e pthreads-win32. Tuttavia, anche se sembra libdispatch è o lavorando, o presto di andare a lavorare su, la maggior parte dei più recenti sistemi POSIX-compatibile ... devo chiedere, cosa su Windows? Quali sono le probabilità di libdispatch essere portato su di Windows? Quali sono gli ostacoli che impediscono che ciò accada?

Se ne è venuto al dunque, che cosa sarebbe I necessità di fare per preforme che portage?

Modifica Alcune cose che già conosco, per ottenere la discussione iniziata:

  • Abbiamo bisogno di un compilatore blocchi-compatibili che compilerà su Windows, no? Sarà PLBlocks gestire questo?
  • Possiamo utilizzare i LLVM blocchi runtime ?
  • Non possiamo sostituire tutti le dipendenze pthread.h in userspace libdispatch con chiamate APR, per la portabilità? O, in alternativa, l'uso pthreads-win32 suppongo ...

Modifica 1: Mi sto sentendo che questo è completamente e totalmente impossibile, mai, perché libdispatch dipende (in qualche modo) su kqueue , che non possono essere resi disponibili su Windows ... qualcuno sa se questo è vero?

È stato utile?

Soluzione

Date un'occhiata a: http://opensource.mlba-team.de/xdispatch/ Questo progetto (e le altre librerie di terze parti) porta libdispatch in piattaforme (Windows, Linux) diversi da MacOSX

Altri suggerimenti

L'equivalente di Windows di libdispatch, dalla mia comprensione di base di esso, è la Concurrency Runtime per il codice non gestito e un insieme di tecnologie collettivamente noti come estensioni parallele per il codice gestito. Mi sembra che le mappe GCD abbastanza bene per entrambi, dal momento che entrambe le unità di lavoro astratte (o "attività") in modo simile.

Da un po 'di ricerca, sembra che ci sia già un bel po' di interesse in un porto, ma che la porta sarebbe un impresa piuttosto drastica e potrebbe finire per essere fondamentalmente solo un'altra implementazione delle API e non effettivamente la condivisione di codice significativo con la libdispatch originale. Ho fatto vedere alcune proposte al porting libdispatch ad essere basato sul Apache Portable Runtime invece di POSIX which'd rendere più facile per renderlo cross-platform per Windows, ma anche questo non sarebbe un cambiamento facile.

Probabilmente, questo sarebbe in alcun modo una piccola impresa.

Credo che piuttosto che libdispatch-on-pthreads e pthreads-on-Win32, o libdispatch-on-aprile e APR-on-Win32, potrebbe essere meglio per implementare libdispatch direttamente sul Win32 Thread Pool API . La buona notizia è che i due API sono abbastanza simili che si potrebbe probabilmente fare la porta da soli. La cattiva notizia è che ci sarebbe probabilmente un sacco di casi d'angolo dove ci sono piccole discrepanze semantiche che rendono esatto comportamento difficile da raggiungere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top