Каков эквивалент Потока. SetApartmentState в C++?

При рассмотрении того, является ли функция реентерабельной или нет, пример должен быть немного менее тривиальным, чем этот.

pDNM DNMManager_New(void)    //reentrant?
{
    return &DNMTemp;
}

Но ссылка на DNMTemp (его адрес) останется неизменной во время выполнения программы, поэтому эта функция реентерабельна.

Но если вы получите доступ к реальным данным, это не так.

uint32_t DNMManager_read(void)    //reentrant?
{
    return SerialNum;
}
5
задан Aardvark 14 October 2008 в 19:02
поделиться

2 ответа

Для неуправляемых процессов Вы управляете моделью квартиры, используемой для потока передающими соответствующими параметрами к CoInitializeEx(). Larry Osterman описал замечательное маленькое руководство по ним:

...
Когда поток звонит CoInitializeEx (или CoInitialize), поток говорит COM, которую из двух типов квартиры он готов разместить. Чтобы указать, что поток должен жить в MTA, Вы передаете COINIT_MULTITHREADED флаг к CoInitializeEx. Указать, что поток должен разместить STA, любой вызов CoInitialize или передача COINIT_APARTMENTTHREADED флаг к CoInitializeEx.
...

-- http://blogs.msdn.com/larryosterman/archive/2004/04/28/122240.aspx

7
ответ дан 14 December 2019 в 04:51
поделиться

C++ не имеет созданным в поддержке потока. То, что Вы ищете, зависит от того, как Вы реализуете потоки в своем приложении. Win32? pthreads? повышение:: потоки? Какой бы ни API, который Вы используете, определит ответ на Ваш вопрос.

Править: похож это может иметь пример для Вас: http://msdn.microsoft.com/en-us/library/system.threading.apartmentstate.aspx

Похоже, что это относится к управляемому C++.

1
ответ дан 14 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: