Perso après avoir été voir ce qu'utilisé twitter comme infrastructure système, rien que là déjà, je pense qu'ils ont un souci, alors de voir une news pareil ne me surprend guère.
![]()
Toutes ces histoires de "standards" ne sont que de la comm. Une fois la plupart de la concurrence éliminée ( je ne crois pas que Firefox ou Opera existerons encore dans 3/4 ) , les éditeurs de navigateurs reviendrons à leurs vielles habitudes de technologies propres à leur navigateur. Ce que fait Microsoft avec l'api METRO , ce que fait Google avec NativeClient , etc ... A long terme tout ces éditeurs n'ont aucun interet à promouvoir ces standards , surtout Microsoft.Au moins ils testent encore Opera. Eux. N'est-ce pas Google ?
Ils utilisent massivement de l'Hadoop (Bien que critiquable ce choix là n'est pas encore le plus aberrent), du ruby, rails et NodeJS.
Apres, niveau système et réseaux, bah comme tous les "gros" ils utilisent du juniper, des serveurs un peu custom, du SCADA etc.
En tous cas, c'est un peu le bordel je trouve par rapport à d'autres gros de la place justement![]()
Bonjour,
En C, la virgule n'est quasiment jamais utilisee, sauf dans le cas suivant :
Le reste des utilisations, du type
Code : Sélectionner tout - Visualiser dans une fenêtre à part free (toto), toto = NULL;est une ineptie qui devrait etre reservee aux concours d'obfuscation de code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part i = a+2, a+b;
C'est un stagiaire qui a ecrit le code de 4Mo ?
Et c'est quoi l'intérêt/gain par rapport à une séparation classique ?
[/QUOTE]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 free (toto); toto = NULL;
je ne connaissais que cet usage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for (i = j = 0; i < 10; i++, j+=2) { }
Effectivement, c'est un autre usage classique et correct.
Dans le cas du free, l'interet est de "lier" ces deux instructions, comme une operation atomique. Ainsi, meme en cas de programmation concurrente (multi-thread), cela te garantit que les deux operations seront effectuees comme une seule, et que dont tout acces a toto apres le free se fera sur NULL.Envoyé par Xinu2010
Dans le for, cela te permet d'effectuer plusieurs operations la ou une seule est normalement prevue.
Hum, je n'ai pas de grosse connaissance dans le fonctionnement profond des threads, mais il me semble que l'orsqu'un des fils a la main, il execute au moins une instruction completement, donc le fait de "lier" l'appel de free et la mise a NULL dans une seule et même instruction pourrait effectivement être un gros plus afin d'éviter d'avoir un pointeur différent de NULL mais invalide.
Après, je ne sais plus s'il est possible qu'un thread ne puisse pas executer completement une instruction lorsqu'il a la main.
Je ne connaissais comme usage de la virgule que celui de la séparation des arguments et des "instructions multiples dans le for"... mais je savais qu'il s'agit d'un opérateur, au même titre que les parenthèses, puisqu'il me semble qu'il est possible de les surcharger en C++.
Mais je n'en ai jamais vu l'intérêt... J'ai d'ailleurs un doute pour le multithread, vu qu'il s'agit d'un simple opérateur. Tant que les instructions ne sont pas atomiques, je ne vois pas en quoi ça peut influer?
Moi aussi, mais j'avais bien lu un truc du genre.
Par exemple, lors de l'attribution d'un quantum de temps au processeur, il est tout a fait possible d'imaginer que les deux suites d'instructions (free et passage a NULL) soient identifiees comme devant etre executees dans le meme quantum, et pas dans deux distincts. Cela suffirait a assurer une certaine atomicite (qui n'a rien a voir avec l'assurance que procure l'utilisation d'un mutex par exemple).
Ça me paraît très douteux aussi.
Dans le cas général, on ne peut pas garantir qu'un thread exécute deux instructions (assembleur, pas C) successives sans être interrompu entre les deux par le timer PIT qui permet le multitasking. Et durant cette interruption, l'OS (Idem Windows, Linux...) peut choisir de rendre la main à un autre thread.
Donc pour s'assurer d'exécuter deux instructions d'affilé sans que les autres threads du processus "ne bouge", il faut forcément un verrou, un mutex par exemple, de manière à bloquer les autres threads.
La deuxième option est de bloquer les interruptions (Tout du moins les interruptions masquables, telles que celle du timer) en utilisant l'instruction CLI. Mais cette instruction ne peut pas être utilisée en user mode donc dans les programmes classiques.
Troisième option probable, bosser sur un OS qui travaille en multitâche coopératif... Windows 3.11 is back.
Bref, l'implémentation d'un opérateur garantissant la succession de deux instructions sans que les autres threads du processus n'aient droit à du temps processeur serait particulièrement vicieuse et couteuse, voir aberrante.
Et ça ne résout pas le problème. Les processeurs différents ont des caches différents. Si l'un d'eux indique dans son cache que la mémoire est libérée et que le pointeur est NULL, l'autre ne le verra pas dans le sien. Et ces deux informations peuvent porter sur plusieurs parties du cache : l'une peut être vue avant l'autre (et même pas dans le bon ordre.)
Sans aucune instruction de synchronisation de cache, il n'y a pas de solution.
La question que je me pose est:
n'est-ce pas dangeureux et encourager les développeurs js à continuer à faire de la merde que de permettre cette syntaxe des plus fantaisistes et patcher en ce sens leur interpréteur ?
Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
Un peu de programmation réseau ?
Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.
Si, mais est-ce donc on demande aux utilisateurs d'Opera de ne plus utiliser twitter enattendantespérant que les devs js corrigent leur fantaisierapidementun jour ?
Partager