Quantcast
Channel: Всички форуми
Viewing all articles
Browse latest Browse all 5785

Проблем

$
0
0
Имам следния клас:


class Cmyclass
{

public:

Cmyclass()
{
InitializeCriticalSection(m_cs);
}

~Cmyclass()
{
DeleteCriticalSection(m_cs);
}

std::string read()
{
std::string strTemp;
EnterCriticalSection(&m_cs);
strTemp = m_strBuffer;
m_strBuffer.clear();
return strTemp;
LeaveCriticalSection(&m_cs);
}

void Write(std::string message)
{
EnterCriticalSection(&m_cs);
m_strBuffer.append(message);
LeaveCriticalSection(&m_cs);
return;
}


private:

CRITICAL_SECTION   m_cs;
std::string  m_strBuffer;

};


После в програмата създавам един обект от този клас. Пускам 2 нишки: Едната пише а другата чете. Няколко пъти едната нишка пише. Напълва малко буфера. В следващия момент втората чете и го прочита успешно.
От там нататък, когато едната пише си добавя текст, всеки път и буфера расте.
ОБАЧЕ, когато втората нишка чете, в буфера НЯМА нищо! (Само първия път когато чете - има текст в буфера. След първото прочитане, все едно стават два различни буфера).

Някой имал ли е подобен проблем? Как се получава? Аз лично нямам никаква идея как се получава това.
Създавам само един обект. Обявил съм го глобално. Само че съм обявил указател и създавам обекта при инициализацията на прорамата. Обекта си е един и същ!

Viewing all articles
Browse latest Browse all 5785

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>