He utilizado fork() en C para iniciar otro proceso. ¿Cómo comienzo un nuevo hilo?¿Cómo comienzo los hilos en C simple?
Respuesta
Como mencionaste fork() supongo que estás en un sistema tipo Unix, en cuyo caso POSIX threads (generalmente referido como pthreads) es lo que quieres usar.
Específicamente, pthread_create() es la función que necesita para crear un nuevo hilo. Sus argumentos son:
int pthread_create(pthread_t * thread, pthread_attr_t * attr, void *
(*start_routine)(void *), void * arg);
El primer argumento es el puntero devuelto a la identificación del hilo. El segundo argumento son los argumentos de subprocesos, que pueden ser NULL a menos que desee iniciar el subproceso con una prioridad específica. El tercer argumento es la función ejecutada por el hilo. El cuarto argumento es el único argumento que se pasa a la función de subprocesos cuando se ejecuta.
Aquí hay un ejemplo sobre cómo usarlo: http://timmurphy.org/2010/05/04/pthreads-in-ca-minimal-working-example/ – tremendows
Los hilos POSIX no cuentan como "C simple" ahora que el C11 estándar los define? – Hydronium
Si bien la API multiproceso C11 está muy influenciada por los hilos POSIX, no son idénticos. Por lo tanto, no me parece correcto decir que los hilos POSIX son "simples C". –
pthreads es un buen comienzo, mira here
Mira la biblioteca pthread (rosca de POSIX).
AFAIK, ANSI C no define el subprocesamiento, pero hay varias bibliotecas disponibles.
Si está ejecutando en Windows, enlace a msvcrt y use _beginthread o _beginthreadex.
Si está ejecutando en otras plataformas, eche un vistazo a la biblioteca pthreads (estoy seguro de que hay otras también).
Los subprocesos no forman parte del estándar C, por lo que la única forma de usar subprocesos es utilizar alguna biblioteca (por ejemplo: subprocesos POSIX en Unix/Linux, _beginthread/_beginthreadex si desea usar el C-runtime de ese subproceso o simplemente CreateThread Win32 API)
- 1. Usar hilos en C en Windows. Ejemplo simple?
- 2. ¿Cómo comienzo aplicaciones externas en C# WPF?
- 3. Determinar cuándo terminaron todos los hilos C#
- 4. ¿Cómo aborta AppDomain.Unload() los hilos?
- 5. ¿Servidor multiproceso simple en C++?
- 6. Hilos en C++ Builder
- 7. ¿Cómo comienzo con Apache Thrift?
- 8. ¿Cómo se clasifican los hilos CUDA en urdimbres?
- 9. que rosca simple en C#
- 10. ¿Cómo newCachedThreadPool reutiliza los hilos?
- 11. Uso de hilos en C++
- 12. hilos que activan C#
- 13. Ctrl-c i.e. KeyboardInterrupt para matar los hilos en python
- 14. C# número de hilos
- 15. ¿Cómo comienzo IIS Express?
- 16. Trabajando con hilos C#
- 17. ¿Cómo funcionan los actores en comparación con los hilos?
- 18. C#: Esperando a que terminen todos los hilos
- 19. C# comunicación entre hilos
- 20. sin detener todos los hilos en gdb
- 21. ¿Cómo escribir un compilador simple en C/++?
- 22. NPTL tapa los hilos máximos en 65528?
- 23. C++ - hilos y múltiples colas
- 24. ¿Cómo están programados los hilos java?
- 25. Multicore + Hyperthreading: ¿cómo se distribuyen los hilos?
- 26. C#: Antecedente al comienzo de un archivo
- 27. E/S de archivo sin hilos en C/C++
- 28. ¿Cómo puedo acelerar los hilos de Python?
- 29. Cómo anular los hilos creados con ThreadPool.QueueUserWorkItem
- 30. ¿cómo se comunican los hilos entre sí?
Depende de la plataforma. Aquí le mostramos cómo hacerlo en Windows: [http://msdn.microsoft.com/en-us/library/ms682453.aspx](http://msdn.microsoft.com/en-us/library/ms682453.aspx) –
Como se explica en la documentación de CreateThread a la que se ha vinculado, si el programa usa la biblioteca C runtime, se debe usar _beginthreadex, no CreateThread. – ChrisN
Gracias, no me había dado cuenta. ¿Cómo sabes si estás usando el CRT? Pensé que todo lo usaba. –