LINUX.ORG.RU

time(C)


0

0

Имеется функция:
int samplef(int n){
int a=1;
while(a<=n) {
printf("%d\n",a++);
...
};
}

Нужно написать программу с этой функцией так, что бы по истечению k сек фунуция переставала работать и программа продолжала работать дальше. При этом в функцию нельзя передать никакие др. параметры.

Пример:
main(){
int i,k=1;
i=samplef(30000);
printf("the end\n");
}
Программа должна вывести диапозон от целых чисел начиная с 1 и заканчивая числом, до которого успела вывести за 1 сек, затем вывести the end и завершить работу.

anonymous

Ответ на: комментарий от anonymous

>Производительность компа считаешь?
нет, просто есть функция, которая выполняет некоторые действия, нужно ее(функцию) остановить через определенное число сек после начала работы этой функции.

anonymous
()

Запустить тред. в запущенном треде послипаться на кол-во секунд. в текущем треде на каждой итерации чекать не кончился ли запущенный тред. ну собственно и всё.

Boost
()

ну если без потоков, то fork() далее в родительском процессе таймер и посылка сигнала на убийство ребенка. или что тебе надо то ???

alphex_kaanoken ★★★
()
Ответ на: комментарий от Boost

>На форк гораздо меньше оверхеда конечно :).

ну дак не понятно что ему надо, я и подумал.

alphex_kaanoken ★★★
()
Ответ на: комментарий от Boost

>Чё та туплю. запомнить время при входе в цикл. на каждой итерации чекать. gettimeofday даёт время

нуууу, тут на вход ф-ции надо подавать параметр лишний или я туплю, ведь тебе надо чтобы по происшествию какого то времени ф-ция завершила свою работу?,а если ф-ция вызывает еще какую ф-цию и так далее ...

alphex_kaanoken ★★★
()
Ответ на: комментарий от Boost

Большое спасибо. Скорее всего так и придеться делать, используя потоки.

anonymous
()
Ответ на: комментарий от Boost

> pthread_create(...,samplef,...);
> sleep(k);
> pthread_kill(...);

...а если ее вызывают и тут и там причем постоянно - это будет тихий ад.

// wbr

klalafuda ★☆☆
()

Программа должна создать поток и поток должен прервать свое выполнение при i=40. 

#include <stdio.h>
#include <pthread.h>
                                                                   
void *t_f()
{
  int i=0;
  for(i=0;i<=50;i++){
    printf("%d\n",i);
      if(i==40) pthread_exit(0);
  }
}

int main(void){
  pthread_t thr;
  pthread_create(&thr,NULL,&t_f,NULL);            
}

При компилировании программы: cc -o pthread ./pthread.c 
компилятор ругается:
/tmp/ccasa4cU.o(.text+0x7a): In function `main':
: undefined reference to `pthread_create'
collect2: ld returned 1 exit status
В чем причина не знаю, только начал разбираться с потоками, help!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.