Постановка проблемы
Программирование и компиляция и запуск на C программы для Linux
Программа для создания трех потоков
Поток 1
Поток 2
Поток 3.
параллельный запуск этих потоков
Каждый поток отобразит свой идентификатор процесса и потока.
* Потоки будут иметь дополнительные функции
output \
В потоке 1 будет отображаться строка.
В потоке 2 будет отображаться строка
В потоке 3 будет отображаться строка
Вся информация, передаваемая в качестве параметров в функцию потока для отображения
Родительский / основной поток ожидает завершения выполнения других потоков.
Final , все потоки будут прерваны.
NOTE
код компилируется с помощью следующей команды в терминале
gcc yield.c -lpthread
следующие результаты
pthread_create () для возвратов потока 1: 0
pthread_create () для возвратов потока 2: 0
pthread_create () для потока 3 возвращает: 0
XD-130201818 Идентификационный номер детали
Корзина 21, 3-й ряд
Магазин 61 на юг
выход недостаточен
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void*print_message_function(void*ptr);
main()
{
pthread_t thread1,thread2;thread3;
const char*message1="XD-130201818 Part ID";
const char *message2 = "Bin 21 3rd row ";
const char *message3 = "Store 61 south ";
int iret1, iret2,iret3;
/* Create independent threads each of which will execute
function */
iret1=pthread_create(&thread1,NULL,print_message_function,
(void*)message1);
if(iret1)
{
fprintf(stderr,"Error - pthread_create() return code: %d\n",iret1);
exit(EXIT_FAILURE);
}
printf("pthread_create() for thread 1 returns: %d\n",iret1);
iret2 = pthread_create( &thread2, NULL, print_message_function,
(void*) message2);
if(iret2)
{
fprintf(stderr,"Error - pthread_create() return code: %d\n",iret2);
exit(EXIT_FAILURE);
}
iret3 = pthread_create( &thread1, NULL, print_message_function, (void*)
message3);
if(iret3)
{
fprintf(stderr,"Error - pthread_create() return code: %d\n",iret3);
exit(EXIT_FAILURE);
}
printf("pthread_create() for thread 1 returns: %d\n",iret1);
printf("pthread_create() for thread 2 returns: %d\n",iret2);
printf("pthread_create() for thread 3 returns: %d\n",iret3);
/* Wait till threads are complete before main continues. Unless we */
/* wait we run the risk of executing an exit which will terminate */
/* the process and all threads before the threads have completed. */
pthread_join( thread1, NULL);
pthread_join( thread2, NULL);
pthread_join( thread3, NULL);
exit(EXIT_SUCCESS);
}
void *print_message_function( void *ptr )
{
char *message;
message = (char *) ptr;
printf("%s \n", message);
}