以高效的方式在线程中获取备份文件

时间:2017-06-29 05:35:01

标签: c++ multithreading performance thread-safety

我需要以安全有效的方式在线程中创建备份文件。但是当线程成功完成上一个任务时,它应该被触发 忽略它。

多次调用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;
        }

}

0 个答案:

没有答案