IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Потоки в Linux, C
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 125
Пол: Женский

Репутация: -  1  +


здравствуйте.
Нужно сделать задание, но сколько ни читаю, никак не приходит понимае что же все-таки и как нужно сделать.

само задание : Поиск слова, в нескольких текстовых файлах;
1)Выполнить задание последовательным алгоритмом;
2)Выполнить задание параллельным алгоритмом (обязательно использовать для разграничения общих ресурсов системные объекты синхронизации);
3)Сделать анализ быстродействия последовательного и параллельного алгоритмов.

буду очень благодарна, если кто-нибудь объяснит как делать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Это и есть параллельный, основной поток и дополнительно созданный будут выполняться одновременно. Последовательный - это без создания thread, просто сначала выведи 20 раз "a", а потом - 20 раз "b" smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 125
Пол: Женский

Репутация: -  1  +


Цитата(IUnknown @ 14.06.2011 22:41) *

Это и есть параллельный, основной поток и дополнительно созданный будут выполняться одновременно. Последовательный - это без создания thread, просто сначала выведи 20 раз "a", а потом - 20 раз "b" smile.gif


т.е. это будет выглядеть так?


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <pthread.h>

static void wait_thread(void)
{
time_t start_time = time(NULL);

while (time(NULL) == start_time)
{
// do nothing except chew CPU slices for up to one second.
}
}

static void *thread_func(void *vptr_args)
{

FILE *f1;
char search[3];
strcpy(search,"rrr");
char buf[200];
int i;

{

f1=fopen("1.txt","r");
while(fgets(buf,200,f1)!=NULL)
{
i=0;
while(i<(200-strlen(search)+1))
{
int j=0;
if(buf[i]==search[j])
{
int j1=i;
while ((j1-i<strlen(search))&&(buf[j1]==search[j]))
{
j1++;
j++;
}
if (j1-i+1==strlen(search)) printf("%s\n",search);
}
i++;
}}
fclose(f1);
wait_thread();
}

return NULL;
}

int main(void)
{
int ii;
FILE *f2;
char search1[3];
strcpy(search1,"yyy");
char buf1[200];

pthread_t thread;

if (pthread_create(&thread, NULL, thread_func, NULL) != 0)
{
return EXIT_FAILURE;
}


f2=fopen("2.txt","r");
while(fgets(buf1,200,f1)!=NULL)
{
ii=0;
while(ii<(200-strlen(search)+1))
{
int jj=0;
if(buf[ii]==search[jj])
{
int jj1=ii;
while ((jj1-ii<strlen(search1))&&(buf1[jj1]==search1[jj]))
{
jj1++;
jj++;
}
if (jj1-i+1==strlen(search1)) printf("%s\n",search1);
}
ii++;
}}
fclose(f2);
wait_thread();
}

if (pthread_join(thread, NULL) != 0)
{
return EXIT_FAILURE;
}

return EXIT_SUCCESS;
}





 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 11.05.2024 12:37
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name