K10 По-моему это не атомарная операция для мультипроцессорных систем. Пусть гуру поправят если я не прав)
K10 атомарно - это когда xchg юзается или на уровне ос юзают синхронизацию. Само по себе нисколько не атомарно..
А по поводу OpenGL. Когда проект переходит в нечто, наподобие 3D редактора. Там вы поймете как хорошо иметь конструкторы объектов. И рисовать их очень удобно 1 методом. а не вызывая процедуры DrawAllPolygon DrawAllCube DrawAllSphere и тп .. А когда дойдете до отмены и повтора действий - тогда паттерны очень помогут. И вы поймете что ООП это даже красиво. Просто для каждой задачи, свои методы решения.
scf TermoSINteZ С этого места поподробнее... В DWORD'е может быть либо предыдущее значение, либо следующее уже записанное, никаких промежуточных "недозаписанных" значений там быть не может. И xchg тут не причем. Другое дело, что возможно нужен префикс LOCK для блокировки шины в многопроцессорной системе, тут уже вопрос к гуру. И то, я думаю что даже LOCK не нужен.
Посмотри внимательнее - это ООП код. Да, там не используется слово class и подобные прибамбасы, а всё сделано руками. И вместо Object->Method(...) вызывается Method(Object, ...) - так же, как это сделал бы компилятор...
osrootd Хы-хы, какая ахинея. Про библию, кстати, тоже. Вот именно поэтому желание и пропало. Потому что ты не видишь красоты. А красоты ты не видишь, потому что ее нет. А нет ее потому что описанные здесь схемы - это жалкие ползающие генетические уродцы, которые всем своим видом просят чтобы их побыстрее престрелили, чтобы они не мучались.
K10 Насчёт атомарности Вы почти правы. Собственно, это уже обсуждалось. XCHG всегда атомарен. Доступ к DWORD, выравненному на четырёхбайтную границу, атомарен. Доступ к невывравненному на четырёхбайтную границу DWORD может быть не атомарен. Тогда без префикса lock доступ к DWORD будет состоять из двух обращений к шине.