Re: Простые и неправильные хамелеоны
От: FDSC Россия consp11.github.io блог
Дата: 01.05.07 13:34
Оценка: +2
Здравствуйте, eao197, Вы писали:

E>В итоге


E>Очередное повторение на собственной шкуре банальных истин:

E>* программировать нужно сначала на бумаге, а не лихим кавалерийским наскоком;
E>* ошибки при проектировании самые тяжелые;
E>* неправильно написанная многопоточная программа может вести себя совершенно непредсказуемым образом;
E>* к проверке правильности работы программы нужно подходить, как минимум, не менее тчательно, чем к ее написанию.

Первый вывод, который нужно было сделать: писать нормальное ТЗ и представлять алгоритм без потери существенной информации из условия. Сразу бросилось в глаза, как ты описываешь логику работы хамелеонов

Первый хамелеон приходит на место встречи, видит, что swappedColor_ равен null, понимает, что он первый. В swappedColor_ помещается указатель на локальную переменную с собственным цветом. И засыпает.

Приходит второй хамелеон, видит, что swappedColor_ не равен null, считывает из нее цвет первого, записывает свой цвет, пинает первого и уходит.

Первый просыпается, обнуляет swappedColor_, берет из своей локальной переменной цвет второго и уходит, освобождая площадку.


Задание было изначально неточно переведено в формальное ТЗ, а затем и в алгоритм, естественно, после этого хоть ты десять раз правильно спроектируй систему, всё равно ошибка может спокойно возникнуть.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.