bonjour,
comment faire du multithread avec javascript ?
j'avais lu un article sur ce site avec un exemple montrant des fontaines de las vegas du casino bellagio mais je ne le retrouve plus
merci d'avance
bonjour,
comment faire du multithread avec javascript ?
j'avais lu un article sur ce site avec un exemple montrant des fontaines de las vegas du casino bellagio mais je ne le retrouve plus
merci d'avance
Salut !
Le multithreading, en JavaScript, s�effectue par le biais des WebWorker.
L�exemple des fontaines est un exemple pour Internet Explorer 10, il se trouve sur cette page .
Toutefois je souhaite te mettre en garde : l�utilisation des WebWorker pour acc�l�rer un rendu graphique n�est pas la meilleur des solutions. Si tu consulte la d�mo des fontaines avec l�un des derniers navigateurs Chrome sous Windows, tu remarqueras que l�activation/d�sactivation des WebWorker n�influe pas sur le framerate. Car Chrome, contrairement a IE, utilise l�acc�l�ration mat�riel pour le rendu, m�me pour le context 2D.
Bref si tu souhaites parall�liser le rendu, il est pr�f�rable de le faire l� o� cela doit �tre fait : sur la carte graphique et non pas sur le CPU !
Cela ne ce sp�cifie pas ! Cela ce programme
Le parall�lisme sur une carte graphique intervient sur 2 notions, par l��criture de micro programme nomm� shader ou kernel :
- Le Vertex Shader : permettant le parall�lisme des calculs g�om�trique sur des sommets.
- Le Pixel Shader : permettant le parall�lisme sur l��valuation des pixels rendu.
Les op�rations g�om�triques dans les shaders sont �galement parall�lis�s, la multiplication de 2 matrices 4x4 ne couteras gu�re plus, en cycles, que la multiplication de 2 r�els. C�est pourquoi il pr�f�rable de raisonn� de fa�on g�om�triques plut�t que de mani�re arithm�tique, de r�soudre toute tes �quations linaires en utilisant le calcul matriciel.
La programmation sur GPU reste la meilleure des solutions, d�un point de vue performance, pour une application graphique dynamique, toute fois cela impose des contraintes, par exemple une carte graphique ne sait tracer que 3 type de primitives : des points, des segments et des triangles. Tracer des courbes se r�sume, en gros, � tester si un pixel v�rifie l��quation de la courbe.
Si je t�ai pas fait fuir avec mes explications, sache qu�il existe plusieurs technos, sur les navigateurs web, pour programmer la carte graphique, entre autres : XNA avec le plugin Silverlight, Stage3D avec le plugin Flash, ou WebGL ne n�cessitant pas de plugin ( a part pour IE).
De mani�re g�n�ral, et pour revenir au sujet principal, les WebWorker, bien que permettant la parall�lisassions de taches de mani�re simple, ne permettent pas un r�el gain de performance. la distribution de la charge entre chaque c�urs du CPU n�est pas garanti par le multithreading.
Il existe, � ma connaissance, sur navigateur, 2 technos pour effectuer du parall�lisme sur CPU
- Le plugin RiverTrail d�intel
- Et les shader du plugin Flash Player permettant d�ex�cuter un kernel pr�-compiler avec l�outil Pixel Bender d�adobe, techno tr�s proche du pixel shader sur GPU
Bonjour
Un WebWorker permet d'effectuer une longue t�che sans bloquer le navigateur (dialogue de suppression du script en cours) et donc l'utilisateur, c'est tout et c'est d�j� beaucoup.Le multithreading, en JavaScript, s�effectue par le biais des WebWorker.
Je n'ai jamais eu de crash avec une utilisation raisonnable des WebWorkers. Si le code JS est standard (les fontaines de IE j'ai un doute par principe), il n'y a pas de raison.
Blog
Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues � un fichier texte vide.
(Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)
Partager