Меня беспокоит то, как это повлияет на глобальные указатели при доступе между потоками. Мой глобальный указатель был потокобезопасным классом. Из кода что будет влиять на глобальный указатель, когда updatethread()
метод обновляет указатель новым указателем и workerthread()
обращается к указателю. С какой синхронизацией я должен работать?
SomeCache* ptrCache = NULL;
//worker thread
void Workerthread(std::string strFileToWork)
{
while (std::getline(fileStream, strCurrent))
{
//worker thread accessing the global pointer
if (ptrCache->SearchValue(strCurrent))
{
iCounter++;
}
}
}
void updatethread()
{
//replace old cache with a new fresh updated.
SomeCache* ptrOldCache = ptrCache;
ptrCache = ptrNewCache;
}