我需要以安全有效的方式在线程中创建备份文件。但是当线程成功完成上一个任务时,它应该被触发 忽略它。
多次调用CreateBakeup函数
bool CreateBakeup()
{
//here i create a OrignalFile and pass to thread for a backup.
if (x_pthread_create (&pthreadId, NULL,
makeBackup,
(void*) OrignalFile) != 0)
{
std::cout<<"failed to create a thread"<<std::endl;
return FALSE;
}
}
我需要这个线程才能成功,直到成功完成备份 如果任何请求来自CreateBakeup,请忽略它。成功之后 只完成此线程应准备好进行其他备份。
static void * makeBackup(void *OrignalFile)
{
if ((pthread_mutex_lock(&keyMutex)) != 0)
{
std::cout<<"failed pthread_mutex_lock() "<<std::endl;
}
std::ifstream Orignal((char *)OrignalFile);
std::ofstream fin("/backupfile");
fin<<Orignal.rdbuf();
remove((char *)OrignalFile)
if ((pthread_mutex_unlock(&keyMutex)) != 0)
{
std::cout<<" failed pthread_mutex_unlock() "<<std::endl;
}
}