안녕하세요. 요즘 OS를 공부하다가 궁금한점이 생겨서 여기에 질문을 올려봅니다.
이와같은 함수가 있다고 하는데요. 여기서 두개의 process가 아래 함수를 동시에 호출할때(transaction(saving,checking,amount1) 과 transaction(checking,saving,amount2) ), 잠재적인 deadlock이 발생할 수 있다고 하는데, 어떻게 왜,,, 발생하는 거죠?
===========================================================================
void transaction(Account from, Account to, double amount) {
Semaphore lock1, lock2;
lock1 = getLock(from);
lock2 = getLock(to);
wait(lock1);
wait(lock2);