Главная /
Язык программирования Python /
Может ли возникнуть deadlock в следующей программе: import threading res_A = threading.Lock() res_B = threading.Lock() res_C = threading.Lock() def proc1(): res_A.acquire(); res_B.acquire(); res_C.acquire() # ... res_B.release(); res_C.release(); res_A.re
Может ли возникнуть deadlock в следующей программе:
import threading
res_A = threading.Lock()
res_B = threading.Lock()
res_C = threading.Lock()
def proc1():
res_A.acquire(); res_B.acquire(); res_C.acquire()
# ...
res_B.release(); res_C.release(); res_A.release()
def proc2():
res_A.acquire(); res_B.acquire(); res_C.acquire()
# ...
res_C.release(); res_B.release(); res_A.release()
def proc3():
res_A.acquire(); res_B.acquire(); res_C.acquire()
# ...
res_A.release(); res_B.release(); res_C.release()
p1 = threading.Thread(target=proc1, name="t1")
p2 = threading.Thread(target=proc2, name="t2")
p3 = threading.Thread(target=proc3, name="t3")
p1.start(); p2.start(); p3.start()
p1.join(); p2.join(); p3.join();
вопрос
Правильный ответ:
да, обязательно
да, возможно
нет, не возникнет
Сложность вопроса
82
Сложность курса: Язык программирования Python
62
Оценить вопрос
Комментарии:
Аноним
Большое спасибо за помощь по интуиту.
22 янв 2016
Другие ответы на вопросы из темы интернет-технологии интуит.
- # Сколько элементов будет содержать список L (то есть, чему будет равно len(L)) после выполнения следующего кода: L = [] L.append([1,2,3]) L = L*2
- # Как начать интерактивную отладку функции f с двумя аргументами (условно: x и y)?
- # Имеется следующий генератор для слияния двух отсортированных последовательностей: def merge(a1, a2): a1 = list(a1) a2 = list(a2) while a1 or a2: if a1 and (not a2 or a1[0] < a2[0]): r = a1 else: r = a2 yield r[0] del r[0] Какие ошибки или особенности имеет эта программа?
- # Укажите набор атрибутов, которые считаются приватными, для экземпляров следующего класса: class Ex: def __init__(self, x, y): xy = x, y self.position = xy self._length = self.__len(x, y) def __len(self, x, y): return abs(x) + abs(y) def getlen(self): return self._length
- # Что обозначает k в примере, использующем TAL? <a href="k" tal:attributes="href string:/digit/$el" tal:content="el">SELECTION</a>