• [^] # Re: Sémantique

    Posté par . En réponse au journal Merci aux développeurs de la GNU libc !. Évalué à 10.

    On dirait que le problème c'est que le C est assez pauvre pour gérer la programmation concurente et ce genre d'effets de bord ...

    Je ne sais pas pourquoi tu as un score négatif car la remarque est tout à fait pertinente. Le langage C n'a aucune sémantique liée à la programmation concurrente (sauf éventuellement le mot clé volatile qui n'était d'ailleurs pas prévu pour ça au début). Tout ce qui existe est sous forme de bibliothèque additionnelle. Et donc on a d'un côté une sémantique du C que connait les compilateur avec les fameux "undefined behaviors" permettant au compilateur de nombreuses optimisations et de l'autre du multithreading qui, par endroit, va à l'encontre de la sémantique du C. Les extensions des compilateurs (comme __thread, __sync* de gcc) sont la preuve que le C en lui même ne suffit pas.

    Depuis quelques semaines, le C11 a été normalisé et ajoute justement quelques outils pour gérer le multithreading (mais il va falloir un peu de temps, il suffit de voir que le C99 est loin d'être très généralisé) :

    • _Thread_local : indique qu'une variable a un thread local storage, c'est à dire qu'elle n'est pas partagée entre threads (c'est disponible avec gcc depuis assez longtemps au travers du mot clé __thread)
    • _Atomic : définit une variable comme étant atomique

    Étienne