mutex for child-threads?
От: turbocode  
Дата: 07.12.16 20:10
Оценка:
А есть mutex который умел бы для child-threads пропускать их в порядке очереди как по LOCK_GUARD?

Пример:
bool MyObject::build()
{
   RECURSIVE_LOCK_GUARD(); //захватывается recursive_mutex внешним потоком
   
   struct MyTask
   {
      MyAnotherObject* _another_obj;

      void Run(void* args)
      {
         CTaskArgs* _task_args = (CTaskArgs*)args;
         if (_task_args != NULL)
         {
            MyObject* _this = (MyObject*)_task_args->GetPointer("this");
            if (_this != NULL)
            {              
               _another_obj = new MyAnotherObject();
               _this->set_default_settings(_another_obj); //deadlock!!! Некрасиво выходит. Как правильно это исправить?
            };
         };
      };
   };

   MyTask my_task;
   CreateThreadPoolTask<MyTask, &MyTask::Run>(&my_task); //задача кидается на свободный поток из ThreadPool

   //...
};

bool MyObject::set_default_settings(MyAnotherObject* obj)
{
   RECURSIVE_LOCK_GUARD();

   //...
};
Отредактировано 07.12.2016 21:00 turbocode . Предыдущая версия . Еще …
Отредактировано 07.12.2016 20:46 turbocode . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.