¿Qué necesito y cómo puedo usar hilos en C en Windows Vista?Usar hilos en C en Windows. Ejemplo simple?
¿Podría darme un simple ejemplo de código?
¿Qué necesito y cómo puedo usar hilos en C en Windows Vista?Usar hilos en C en Windows. Ejemplo simple?
¿Podría darme un simple ejemplo de código?
Aquí está el MSDN sample sobre cómo usar CreateThread() en Windows.
La idea básica es llamar a CreateThread() y pasarle un puntero a su función de hilo, que es lo que se ejecutará en el hilo de destino una vez que se haya creado.
El código más simple de hacerlo es:
#include <windows.h>
DWORD WINAPI ThreadFunc(void* data) {
// Do stuff. This will be the first function called on the new thread.
// When this function returns, the thread goes away. See MSDN for more details.
return 0;
}
int main() {
HANDLE thread = CreateThread(NULL, 0, ThreadFunc, NULL, 0, NULL);
if (thread) {
// Optionally do stuff, such as wait on the thread.
}
}
También tienen la opción de llamar SHCreateThread() -La misma idea básica, pero lo hará algún tipo de inicialización del shell para usted, si se solicita, como inicializar COM , etc.
Tenga en cuenta, sin embargo, que si va a utilizar el CRT en el nuevo hilo, es posible que deba ser extremadamente cuidadoso. En MSVC, por ejemplo, debe usar _beginthread/_beginthreadex y _endthread en lugar de las API relativas, para permitir que el CRT asigne/desasigne correctamente sus estructuras internas por subproceso. Creo que también en otros CRT debería ir de alguna manera así. –
Además, puede usar SHCreateThread() si desea inicializar COM para usted en el nuevo hilo, entre otras cosas. –
Esto parece ser un ejemplo de C++ (enlace). ¿Esto también funcionaría para C? – Jiminion
Utilizaría la función CreateThread.
Usted mencionó semáforos también. Para eso usaría CreateSemaphore.
Las operaciones atómicas y los mutexes son buenos. Yo uso CreateThread, etc., no pthreads.
Está pthreads disponible. en Windows y/o Visual Studio? – Jiminion
no hay subprocesos directamente disponibles. en Windows y/o Visual Studio. Sin embargo, puede usar mingw y cygwin. –
Si bien esta puede ser una pregunta simple de RTFM, no es una pregunta real. Después de todo, ya hay varias respuestas reales. –