c++ - pthread_create - Importancia de-pthread flag al compilar
pthreads php (2)
En varios proyectos C y C ++ con múltiples subprocesos, he visto que se -pthread
bandera -pthread
tanto a la etapa de compilación como a la de vinculación, mientras que otros no la usan en absoluto y simplemente pasan -lpthread
a la etapa de vinculación.
¿Existe algún peligro de no compilar y vincular con la bandera de -pthread
? Es decir, ¿qué hace realmente la -pthread
? Estoy interesado principalmente en plataformas Linux.
De man gcc
:
-pthread Agrega soporte para multihilo con la biblioteca pthreads. Esta opción establece indicadores tanto para el preprocesador como para el enlazador.
Tratar:
gcc -dumpspecs | grep pthread
y busca cualquier cosa que comience con %{pthread:
En mi computadora, esto hace que los archivos se -D_REENTRANT
con -D_REENTRANT
y se vinculen con -lpthread
. En otras plataformas, esto podría diferir. Use -pthread
para la mayor portabilidad.
Usar _REENTRANT
, en GNU libc, cambia la forma en que funcionan algunos encabezados de libc. Como ejemplo específico, hace que errno
llame a una función que devuelve una ubicación local de subprocesos.