Die Unterstützung für Pthread wird hinzugefügt und kann bereits mit ein wenig Setup verwendet werden. Da std :: thread Pthread unter der Haube verwendet, können Sie es auch verwenden. Weitere Informationen finden Sie unter this discussion.
Was hatte ich zu tun:
- Verwenden Sie eine neuere Emscripten (Ich bin mit 1.34.1 Prüfung)
- Installieren Firefox Nightly
- das Flag aktivieren USE_PTHREADS
- Seien Sie aufmerksam, dass Dies ist experimentell und einige Dinge sind knifflig
Ich war havi ng Probleme Schreiben eines Pthread Beispiel oben, die tatsächlich lief, aber hier ist Code std :: Thread, der die Grundfunktionalität demonstriert, die für mich gearbeitet:
// 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();
}
Ich habe das Einfädeln in einem größeren Projekt verwenden konnten (zu groß für einen Posten hier!), also sind sie lebensfähig. Sie sind nicht so schnell, fürchte ich, obwohl sich das mit der Zeit verbessern könnte.
es zu bauen:
emcc main.cpp -o main.html -s USE_PTHREADS=1 --std=c++11
Output 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!
nicht mehr wahr: https://groups.google.com/forum/#! topic/emscripten-discuss/gQQRjajQ6iY – Lightbeard