Собственно вопрос: какими способами организуется многопоточная обработка данных и синхронизация в С/C++?
Как организовать многопоточное приложение на С/C++
1
Спросил
Лучший ответ:
0
На CitForum есть достаточно аподробная статься под название "Потоки"(из серии "Программирование для Linux", журнал Linux Format)
Небольшой пример программы оттуда:
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <pthread.h>
void * thread_func(void *arg)
{
int i;
int loc_id = * (int *) arg;
for (i = 0; i < 4; i++) {
printf("Thread %i is running\n", loc_id);
sleep(1);
}
}
int main(int argc, char * argv[])
{
int id1, id2, result;
pthread_t thread1, thread2;
id1 = 1;
result = pthread_create(&thread1, NULL, thread_func, &id1);
if (result != 0) {
perror("Creating the first thread");
return EXIT_FAILURE;
}
id2 = 2;
result = pthread_create(&thread2, NULL, thread_func, &id2);
if (result != 0) {
perror("Creating the second thread");
return EXIT_FAILURE;
}
result = pthread_join(thread1, NULL);
if (result != 0) {
perror("Joining the first thread");
return EXIT_FAILURE;
}
result = pthread_join(thread2, NULL);
if (result != 0) {
perror("Joining the second thread");
return EXIT_FAILURE;
}
printf("Done\n");
return EXIT_SUCCESS;
}
Новые ответы
0
Непосредственным обращением к API платформы. Для Windows это функции, описанные в топике Process and Thread Functions.
А для Unix систем, что можно использовать
Если не ошибаюсь, UNIX поддерживает стандарт POSIX и, в частности, POSIX Threads, который содержит описание функций для создания, управления и синхронизации потоков.
Да ты абсолютно прав)