
23.05.2009, 11:55
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
С нами:
9427413
Репутация:
973
|
|
Сообщение от cr0w
login999
В твоей функции Lock, наверное, все же нужен: например, если поток выполняющий эту функцию исполнит код "Count.append(Count[0]+1)" и, не успев выполнить "del Count[0]", передаст управление другому потоку, который исполнит код этой функции целиком, то результат ее выполнения в первом потоке в итоге будет неверным.
А использовать изменяемый объект в качестве дефолтного значения аргумента функции, на мой взгляд, даже "некошернее", чем использовать global. (:
Как мне кажется, удобней было бы реализовать такой счетчик в виде класса.
Имхо классы это лишнее для таких целей
Мну если честно интересует одно - функция-счетчик
А насчет функции - я тут пораскинул моском - я не уверен насчет того, является ли del атомарной операцией, понял что я в этом не уверен и решил переделать эту функцию так:
Код:
def Counter (Number=[0]):
Number[0] = Number[0]+1
return Number[0]
А насчет того что там используется изменяемый обьект - и что же здесь плохого? Если такое присваивание возможно, то почему бы его не использовать ?
Тупо одна операция присваивания, теперь точно без локов можно
Последний раз редактировалось login999; 23.05.2009 в 11:59..
|
|
|