Майкрософщини

9 отговора 750 прегледа
#1

Майкрософщини

Имам един клас (CMyClass), който има мембер synchronization обект. Съответно Lock и Unlock методи, които просто заключват тоя synchronization обект. Само че кодът

void CMyClass::F1Internal()
{
assert( IsLocked() );
* * *
}


void CMyClass::F1()
{
Lock();
TRACE( "%d\r\n", ::GetThreadId() );
F1Internal();
* * *
Unlock();
}


void main()
{
CMyClass obj;

bool *bFinishedFirst = NULL;
bool *bFinishedSecond = NULL;

bFinishedFirst = ::MyStartNewThread( &obj );
bFinishedSecond = ::MyStartNewThread( &obj );

while( !*bFinishedSecond || !*bFinishedFirst );

return 0;
}


ми трейсва на няколко треда влизането и гърми на ассерт-а в F1Internal() във втория треад.

Пробвах и с CMutex и с CCriticalSection, ма се тая ... Какво е решението ?!?

Отговор
в отговор на rage #2

Re: Майкрософщини

решението е да си четеш MSDN-a и да не задаваш тъпи въпроси :).

Отговор
в отговор на rage #3

Re: Майкрософщини

e да беше казал какво има в Lock и Unlock. аз ползвам мутекси аз синхронизация, само че директно с WaitForSingleObject, без мфц или друга библиотека. не съм имал проблем, а ползването им е фасулски просто - бях приятно изненадан че няма никакви излишни операции.

Отговор
в отговор на rage #4

Re: Майкрософщини

Т'ва е част от световния заговор - дебела е работата...

Отговор
в отговор на zaphod #5

Re: Майкрософщини

Кво да има

CMyClass::Lock()
{
m_objSynchronizator.Lock();
}

CMyClass::Unlock()
{
m_objSynchronizator.Unlock();
}

Но благодаря за съвета - и аз ще пробвам WaitForSingleObject4.

Отговор
в отговор на rage #6

Re: Майкрософщини

Гоше, заеби МФЦ-то. То не ти дава нищо особено.
Верно е, знаменитият ЦСтринг е турбо як, но има и други библиотеки, дето имат стрингове. Ако па ти е толкова любим ЦСтринг-а - можеш да си поиграеш, да загубиш един ден и да си напишеш сам такъв клас.
МФЦ е боза и цифки. Наскоро (преди 3-4 месеца) гледах нови "яки" книги за МФЦ. Тия микрософци нема да се укротят, да знаеш. Наистина това е част от световния заговор. Яко МФЦ и яко индийци. Насекъде. И на Централна Гара София.
Аз например потребявам предимно СТЛ, ако ми требе контейнер. Или ВТЛ ако ми требе да правя прозорци, бутони и подобни чудесии. Понякога потреблювам и АТЛ, нищо че е микрософтско. Все пак на виндовс програмируваме, нали?

Отговор
в отговор на Taтьo #7

Re: Майкрософщини

MFCL е феноменална. В смисъл - не съм срещал по-псувана и същевременно интензивно използвана (от любители до майстори) библиотека. :))

Отговор
в отговор на Paдo #8

Re: Майкрософщини

Хехе да - и едновременно псувана и възхвалявана хем колко е 'тънка', хем колко е 'дебела'.

Сигнатура!
Отговор
в отговор на Paдo #9

Re: Майкрософщини

ами то с всичко от Микрософт е така,
като нямаш възможност да избереш,
ползваш и псуваш...

Отговор
в отговор на moox #10

Re: Майкрософщини

Не се сещам за MS технология без алтернатива. Друг е въпросът коя доколко адекватно върши работа :)

Отговор