2012-06-24 10 views

Respuesta

5

Si realmente quiere C (no C++), Es mejor utilizar los hilos POSIX estándar en plataformas que no sean Windows, y utilizar pthreads-win32 en Windows. Admite 32 y 64 bits, tanto MSVC como MinGW. Su versión actual (2.9.1) fue lanzada hace solo un mes, por lo que el proyecto se mantiene activamente. También hay un fork on github con algunas correcciones en el proyecto MSVC2010.

Si C++ es también una opción, elegiría impulso, porque es donde el C++ estándar evoluciona (el diseño de std::thread en C++ 11 es una evolución de boost::thread, etc.)

Para la red Parte de su pregunta, boost::asio es la mejor opción si C++ está bien para usted, de lo contrario no veía nada comparable en C. En particular, boost::asio admite I/O Completion Ports (IOCP) en Windows, lo cual es crítico para el rendimiento. boost::asio requiere algo de tiempo para aprender, pero en mi opinión personal vale la pena leer cada minuto de la documentación (lo que es genial) y trabajar con ejemplos.

1

Puede intentar usar Qt (C++) como envoltorio, tiene bibliotecas multiplataforma para enhebrar y crear redes; a menos que su proyecto tiene que ser 100% C.

1

Puede utilizar impulso (C++): asio - para la salida de entrada asinchronous, threads - para la plataforma de enhebrado independiente

+1

Dijo C, no C++. De lo contrario, el impulso está bien. –

+0

Lo siento, mi error. – Eugene

0

Hay una clase de C++ llamada hilos XP en proyecto de código http://www.codeproject.com/Articles/15983/Cross-Platform-Threads
es necesario cambiar la ifdef de Mach a ifndef Win32/64

lo usé para mi aimbot OpenArena, el tutorial incluye la clase XP-Hilos modificación: http://aimbots.net/tutorials/19992-audio-killspam.html

Todo lo que necesita hacer es de- "clasificar" para el uso en C.

se puede ver el resultado final aquí, por cierto: :)
http://www.youtube.com/watch?v=nyJ8aM52ykE

1

El nuevo estándar C, C11, viene con soporte de rosca. AFAIK aún no hay C11, pero hay implementaciones (envoltorios) de la parte de enhebrado. En los sistemas POSIX, podrías usar mi contenedor en P99 en pthread, esto debería darte Linux y Mac. En los sistemas Windows existe al menos la implementación de referencia de Dinkumware que dio origen a API tal como se define en el estándar.

El uso de C11 le daría una API de hilo unificado "a prueba de futuro".

Para tomas de corriente, mi impresión es que las interfaces de socket BSD también se proporcionan de forma relativamente directa en Windows, pero no tengo experiencia en programación en esa plataforma.

Cuestiones relacionadas