CString использует ленивое копирование. при этом для увеличения/уменьшения счетчика ссылок используется _AtlInterlockedIncrement\_AtlInterlockedDecrement. однако для всех других операций, в частности - провека значения счетчика, никакой специальной поддержки многопоточности нет.
В результате, даже если операции присвоения одной строки в другую делать в контескте некого объекта синхронизации (например критической секции) - дальнейшая работа с обеими строками все равно остается потоконебезопасной.
Поэтому присвоение нужно производить, либо предварительно делая Lock для исходной строки, либо через SetString для целевой, приводя исходную к LPCTSTR.
Для чего этот топик:
1. "Граждане, будьте бдительны"
2. Вожможно, кто-то объяснит мне что я не прав и расскажет как именно можно прекрасно работать с CString в многопоточном приложении.
Социальные закладки