2012-03-25 12 views
1

Wie http://curl.haxx.se/libcurl/c/curl_global_init.html sagte, curl_global_init() ist notwendig, aber diese Funktion ist nicht threadsicher. Als Code unten:Multi-Prozess mit Curl, wann muss curl_global_init aufgerufen werden?

// main process 
curl_global_init(); // 1 curl_global_init 
pid = fork(); 
if (pid == 0) { 
    // Child process 
    curl_global_init(); // 2 curl_global_init 
    // ... curl functions 
} else { 
    // parent process 
    // ... curl functions 
} 

Braucht Kind Prozess curl_global_init wieder anrufen? Ich denke, der Child-Prozess kopiert den Speicherplatz aus dem übergeordneten Prozess, und Sie müssen curl_global_init nicht erneut aufrufen. Ist das richtig?

+1

Ihr Code ist nicht Multithread, also warum ist die Frage über Thread-Sicherheit? –

+0

ich weiß. aber muss curl_global_init zweimal nach fork aufgerufen werden? – cloudzhou

+0

Ich kann schreiben curl_global_init(); und curl_global_cleanup(); jeder Prozess bei Bedarf – cloudzhou

Antwort

-2

Ja, es gibt keine Notwendigkeit zu nennen curl_global_init()

1

curl_global_init ist einmal aufgerufen werden. Denken Sie daran, dass beide Forks eine Kopie des Prozesses zum Zeitpunkt des Aufrufs erstellen, so dass auch der Zustand von curl repliziert wird. Somit wird es nicht notwendig sein, curl_global_init erneut in dem untergeordneten Objekt aufzurufen, wenn die Initialisierung bereits vor dem fork durchgeführt wurde.

-1

Aber Kindprozess und Elternprozess haben unterschiedliche Speicherkapazität. Ich denke, kein Problem, wenn curl_global_init in Kind Prozess

+0

Das sieht so aus, als sollte es ein Kommentar zu einer bestehenden Antwort sein, kein neues Antworten. – melpomene

Verwandte Themen