funciona - Función Strtok seguridad de hilo
strtok php (2)
strtok()
no es reentrante, por lo que no debe usarse desde aplicaciones de subprocesos, use strtok_r()
lugar.
He pasado algo de tiempo en la depuración de un programa que da fallas de segmentación. El error es bastante indeterminista e intermitente, lo cual es molesto. Lo reduje a la llamada de strtok. Sospecho que es la llamada de strtok para dividir la cadena en dos hilos diferentes lo que causa la falla de segmentación. ¿Puedo llamar a strtok en dos hilos diferentes?
Gracias.
strtok()
no es seguro para MT porque almacena algunas variables intermedias globalmente y las reutiliza en cada llamada (ver que no tiene que volver a pasar la cadena cada vez que llame a strtok()
). Puede echar un vistazo a las páginas de manual de los métodos que está utilizando y siempre se indica al final si es seguro para MT o no.
Cuando un método no es seguro para MT (multihilo seguro o reentrante), debe buscar el mismo método con el sufijo _r que significa reentrand. En su ejemplo, strtok_r()
como se sugiere en la otra respuesta.