1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
здравствуйте. Нужно сделать задание, но сколько ни читаю, никак не приходит понимае что же все-таки и как нужно сделать.
само задание : Поиск слова, в нескольких текстовых файлах; 1)Выполнить задание последовательным алгоритмом; 2)Выполнить задание параллельным алгоритмом (обязательно использовать для разграничения общих ресурсов системные объекты синхронизации); 3)Сделать анализ быстродействия последовательного и параллельного алгоритмов.
буду очень благодарна, если кто-нибудь объяснит как делать.
/* Это в принципе не нужно теперь, можно убрать... */ static void wait_thread(void) { time_t start_time = time(NULL);
while (time(NULL) == start_time) { /**/ } }
int stop_access = 0;
static void *thread_func(void *vptr_args) { while(stop_access) /* Ждем, пока другой поток, возможно выводит свое сообщение */ { }
/* Потом блокируем вывод и выводим сообщение ЭТОГО потока */ stop_access = 1; printf(" %s\n", (char*)vptr_args); stop_access = 0; /* Выведено, можно разблокировать */
if (pthread_join(first_thread, NULL) != 0) { return EXIT_FAILURE; } if (pthread_join(second_thread, NULL) != 0) { return EXIT_FAILURE; }
return EXIT_SUCCESS; }
Если не сделать махинаций с stop_access, то получишь разные причудливые сообщения (буквы перемешаются между собой, скажем, первая - из первого потока, потом две - из второго, потом 4 опять из первого, и т.д... Чтобы это предотвратить - запрещаем вывод, пока кто-то другой выводит свою информацию... Это гарантирует корректное отображение...