Il supporto per pthread è stato aggiunto e può essere già utilizzato con un po 'di installazione. Poiché std :: thread usa pthread sotto il cofano, puoi usarlo anche tu. Vedere this discussion per ulteriori informazioni.
Cosa dovevo fare:
- Utilizzare un emscripten più recente (sto testando con 1.34.1)
- Installare Firefox Nightly
- attivare il flag USE_PTHREADS
- essere consapevoli che questo è sperimentale e alcune cose sono pignoli
I was havi ng problemi di scrittura di un esempio pthread che in realtà ha funzionato, ma qui è il codice che utilizza std :: filo che dimostra le funzionalità di base, che ha lavorato per me:
// main.cpp
#include <thread>
#include <iostream>
void func()
{
std::cout << "I'm a thread!\n";
}
int main()
{
std::thread test1(func);
std::thread test2(func);
std::thread test3(func);
// join seems to lock up the browser
//test1.join();
//test2.join();
//test3.join();
}
sono stato in grado di utilizzare la filettatura in un progetto più ampio (per grande per un post qui!), quindi sono vitali. Non sono così veloci, temo, anche se potrebbe migliorare col tempo.
Per costruirla:
emcc main.cpp -o main.html -s USE_PTHREADS=1 --std=c++11
uscita in Firefox Nightly 42.0a1 (2015/07/16):
Preallocating 1 workers for a pthread spawn pool.
Preallocating 1 workers for a pthread spawn pool.
Preallocating 1 workers for a pthread spawn pool.
I'm a thread!
I'm a thread!
I'm a thread!
fonte
2015-07-16 23:20:41
non è più vero: https://groups.google.com/forum/#! topic/emscripten-discuss/gQQRjajQ6iY – Lightbeard