Retourner au contenu associé (entrée de forum : petite question....)
Posté par galactikboulay le 15 mai 2005 à 22:47. En réponse au message petite question..... Évalué à 3.
#include <pthread.h> int running = 1; void* thread_1(void* p) { int a = 0,c = 1; while(running) { //printf("thread : salut\n"); //sleep(2); a++; c = a * c * c; } printf("thread : ok d'accord, c = %d...\n",c); } int main() { pthread_t* t; t = (pthread_t*)malloc(sizeof(pthread_t));; pthread_create(t,NULL,thread_1,NULL); sleep(10); printf("main : bon tu t'arretes maintenant!\n"); running=0; sleep(100); }
.globl thread_1 .type thread_1, @function thread_1: pushl %ebp xorl %ecx, %ecx movl %esp, %ebp pushl %ebx movl 1,ドル %edx subl 20,ドル %esp movl running, %ebx testl %ebx, %ebx je .L8 .p2align 4,,15 .L6: incl %ecx movl %ecx, %eax imull %edx, %eax imull %eax, %edx testl %ebx, %ebx jne .L6 .L8: movl %edx, 4(%esp) movl $.LC1, (%esp) call printf addl 20,ドル %esp popl %ebx popl %ebp ret
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: explication sommaire
Posté par galactikboulay . En réponse au message petite question..... Évalué à 3.
Compilé avec -O3.
Extrait du code assembleur généré (rajouter l'option -S sur la
ligne de commande de gcc):
On voit ici que la boucle, située entre .L6 et .L8 ne recharge PAS
le contenu de la variable running.
Donc, ne pas faire de généralisation abusive à partir d'un seul
exemple.