установка событий в Задаче C - PullRequest
0 голосов
/ 21 мая 2011

У меня есть следующий код в cpp.Мне нужно перенести его в Objective C. Я новичок в Objective C.

Как установить события и запускать потоки в Objective C.

RS232Timer::RS232Timer()
{
 m_hThreadEvent = CreateEvent(NULL,FALSE,FALSE,NULL);
 m_hThreadControlEvent = CreateEvent(NULL,FALSE,FALSE,NULL);
 m_bThreadActive = false;
 m_bRunThread = false;
}

void RS232Timer::startThread()
{
 m_bRunThread = true;
 (void)ResetEvent(m_hThreadEvent);
 (void)ResetEvent(m_hThreadControlEvent);
 (void)AfxBeginThread(timeoutThread,(void*)this); //timeoutThread is another function
 if((waitForSingleObject(m_hThreadControlEvent,1500)!=WAIT_OBJECT_O)||!m_bThreadActive)
 {
  assert(FALSE);
  m_bThread = false;
 }
}

Ответы [ 2 ]

2 голосов
/ 12 октября 2012

Надеюсь, это поможет вам:

dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);

[object runSomeLongOperation:^{
    // your own code here.
    dispatch_semaphore_signal(semaphore);
}];

dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
dispatch_release(semaphore);
2 голосов
/ 21 мая 2011

Это не только вопрос переноса из C ++ в ObjC, но также из win32 в Cocoa ...

Я бы предложил вам использовать NSThread и NSCondition .

Чрезвычайно полезным является Руководство по программированию потоков , особенно когда речь идет о синхронизации .

Нет простого "оператора в оператор"портирование возможно, я надеюсь, вы понимаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...