Ознакомьтесь с нашей политикой обработки персональных данных
19:49 

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

Как это лучше сделать?
Нашла в инете некий класс thread, но, то ли он работает не так, как я поняла, то ли я не смогла заставить его работать как надо.
В итоге я не заметила отличий от работы обычной ф-и.

Что я сделала:

elt *z;
clock_t n=0, l=0;

void func();

int main()
{
z = new elt();
int c=-1, x;
while(c){
thread th_f(func);
th_f.join();
... // здесь сидят другие действия, параллельно которым надо выполнять функцию
}
return 0;
}


void func() {
l = 2 * clock() / CLOCKS_PER_SEC;
if (n < l) { n = l; ...}
...
}


Спасибо.

@темы: C++, Вопрос

Комментарии
2016-01-31 в 19:59 

CD_Eater
в опе ещё играет детство, а жить уже надо по-взрослому
th_f.join(); ожидает завершения выполнения вашего дополнительного потока, это вам не нужно
вам нужно просто создать поток и не ждать его
бесконечный цикл должен быть внутри дополнительного потока (внутри функции func)
в главной ветви - просто запустили поток и забыли о нём

2016-01-31 в 20:06 

Юрий Рэйн
λOther side of the memory crystal. …λ
Плюс n,l лучше сделать volatile, во избежание.
И предпочитать официальные потоки самописным: http://en.cppreference.com/w/cpp/thread/threadили
WinAPI https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms682453(v=vs.85).aspx

Комментирование для вас недоступно.
Для того, чтобы получить возможность комментировать, авторизуйтесь:
 
РегистрацияЗабыли пароль?

ru_programming

главная