2015-12-31 2 views
0

J'ai quelque chose comme ceci:terminaison du programme après FCGX_InitRequest() appeler

... 
int fcgiInit = FCGX_Init(); 
if(fcgiInit != 0) 
{ 
    return 1; 
} 

int socket = FCGX_OpenSocket(":8000", 100); 
if(socket == -1) 
{ 
    return 2; 
} 

//point A 
FCGX_Request* request = new FCGX_Request; 
if(FCGX_InitRequest(request, socket, FCGI_FAIL_ACCEPT_ON_INTR) != 0) 
{ 
    return 3; 
} 
... 
//point B 

Il fonctionne bien, mais lorsque je tente de l'exécuter avec le code entre le point A et B dans un autre thread mon programme se termine avec le statut -1 après FCGX_InitRequest() appel.

Qu'est-ce qui ne va pas et puis-je le faire correctement?

PS. J'espère que j'obtiens la réponse cette année;)

Répondre

0

FCGX_Init() devrait simplement être appelé au début de chaque fil. Cela signifie:

... 
int socket = FCGX_OpenSocket(":8000", 100); 
... 
//point A 
int fcgiInit = FCGX_Init(); 
... 
if(FCGX_InitRequest(request, socket, FCGI_FAIL_ACCEPT_ON_INTR) != 0) 
... 
//point B