C++ как проверить поток.
Добрый всем.
Есть задачка, опрашивать датчик через определенный интервал времени (время опроса датчика не должно прерываться). После заполнения файла temp.txt он копируется по сети (далее создается новый файл temp.txt) и так по кругу.
Для реализации задачи я в программе запустил 2 потока, первый делает опрос, второй копирует данные.
Функция копирования файла для 2-го потока.
void CopyNetFile(std::string path) {
DIR *dir;
char dirbuffer[150];
const char * test_path = path.c_str();
strcpy(dirbuffer, test_path);
dir = opendir(dirbuffer);
if ( dir == NULL ) {
printf("Каталог не доступен (копируй локально\n");
}else{
printf("DIR YES\n");
std::string nametime = ""+path+"file.txt";
std::string nametemp = "temp.txt";
const char* p_c_nametemp = nametemp.c_str();
const char* p_c_nametime = nametime.c_str();
std::ifstream in(p_c_nametemp); // open original file
std::ofstream out(p_c_nametime); // open target file
out << in.rdbuf(); // read original file into target
out.close(); // explicit close, unnecessary in this case
in.close();// explicit close, unnecessary in this case
unlink (p_c_nametemp);//удаляем файл
}
}
#include <thread>
int main(int argc,char *argv[]) {
while (1){
опрос датчика...
if (пришло время копировать) {
//Запускаем в отдельном потоке функцию
std::thread copy_thread(CopyNetFile,path);
//Не дожидаемся выполнения функции продолжаем работу основного потока.
copy_thread.detach();
}
}
}
С потоками работаю первый раз, не знаю как проверить есть остановка основного потока или нет.