pub:eclipse_pthread

En la ventana de propiedades ‘Properties’ del proyecto seleccionar la opción ‘C/C++ build –> GCC C Compiler –> Miscellaneous’.

En la primera pestaña ‘Tool Settings’, en la opción ‘Other Flagsinsertar el término-pthread

En la ventana de propiedades ‘Properties’ del proyecto seleccionar la opción ‘C/C++ build –> Settings –> GCC C Linker –> Libraries’.

En la sección de librerias ‘Libraries (-l)’, insertar la librería ‘pthread

Para el desarrollo software en C/C++ portable con Eclipse CDT bajo Windows se recomienda la instalación del toolchain MinGW mediante el instalador TDM-GCC, que incluye la capa de emulación “winpthreads” para la librería de POSIX threads (pthreads)

Una vez instalado con las opciones por defecto aparece instalado en:

> C:\TDM-GCC-32

y comprobaremos que el directorio con los ejecutables, se encuentra en el camino de búsqueda %PATH%, en este caso:

> echo %PATH%> ...;C:\TDM-GCC-32\bin

Por línea de comandos podemos comprobar el funcionamiento con un archivo fuente de ejemplo, p.ej.:

hello-pthread.c
#include <pthread.h>
#include <stdio.h>
void* hello(void* id) {
   printf("%d: Hello world!\n", *((int*) id));
   return 0;
}
int main(int argc, char* argv[])
{
   const int COUNT = 5;
   int i;
   pthread_t thread[COUNT];
   int ids[COUNT];
   for (i = 0; i <COUNT; i++) {
      ids[i] = i;
      int retval = pthread_create(&thread[i], NULL, hello, &ids[i]);
      if (retval) {
         perror("pthread_create failed");
         return 1;
      }
   }
   for (i = 0; i <COUNT; i++) pthread_join(thread[i], NULL);
      return 0;
}

Mediante la compilación por línea de comandos:

> gcc.exe −o hello hello−pthread.c −lpthread

Se debería obtener un resultado de ejecución similar a:

> hello.exe
In main: creating thread 0
In main: creating thread 1
Hello World! It's me, thread #0!
In main: creating thread 2
Hello World! It's me, thread #1!
In main: creating thread 3
Hello World! It's me, thread #2!
In main: creating thread 4
Hello World! It's me, thread #3!
Hello World! It's me, thread #4!

Tras la comprobación de la correcta instalación, en la siguiente ejecución de Eclipse CDT se detecta la existencia del toolchain MinGCC que podremos seleccionar al crear un nuevo proyecto de C/C++:

La configuración de librería debe hacerse según el apartado anterior para llevar a cabo una compilación y ejecución directa correcta en la pestaña de salida de la consola.

En algunos casos se ha detectado que la invocación del depurarador provoca un error por el nombre en Windows del mismo, que no se identifica por Eclipse CDT (se espera encontrar gdb.exe en el directorio de ejecutables), lo que puede subsanarse al invocar de nuevo al instalador y cambiar la versión de GDB por defecto por la incluida en el paquete original MinGW.

La librería POSIX thread (pthread) de esta distribución para Windows se encuentra integrada a su vez en una librería que incluye además otras especificaciónes de la API de Windows, especialmente funciones de multimedia, por lo que puede realizarse en esos casos un único enlace con la librería de más alto nivel denominada winmm.lib cuyo fichero de cabecera es mmsystem.h.

Una compilación por línea de comandos válida entonces sería:

> gcc.exe −o hello hello−pthread.c −lwinmm

y la equivalente configuración para Eclipse CDT.

  • pub/eclipse_pthread.txt
  • Última modificación: 2020/09/28 11:44
  • (editor externo)