Re: Вопрос по синхронизации доступа к переменным
От: jazzer Россия Skype: enerjazzer
Дата: 25.12.09 10:06
Оценка: 2 (1) +1
Здравствуйте, sidorov18, Вы писали:


S>
S>    LONG CreateUniqueID()
S>    {
S>        static LONG id = 0;

S>        return id++;
S>    }
S>

S>Обеспечит ли такой метод уникальность id в многопоточном приложении?

нет

S>т.е. может ли при двух вызовах CreateUniqueID вернуться одинаковый id


S>или нужно делать нечто подобное:

S>
S>    LONG CreateUniqueID()
S>    {
S>        static volatile LONG id = 0;

S>        return InterlockedIncrement( &id );
S>    }
S>


нужно. И заодно нужно убедиться, что инициализация id нулем происходит "до всего", чтоб не было никаких обнуляющих действий в рантайме (по идее, она должна лежать в памяти, которая забита нулями сразу при старте приложения).
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.