# unlock()
하루일지 - 22.07.15
CS 질문 - Blocking I/O & Non-Blocking I/O > I/O 작업은 Kernel level에서만 수행할 수 있다. 따라서, Process, Thread는 커널에게 I/O를 요청해야 한다. > Bloking I/O 1) Process(Thread)가 Kernel에게 I/O를 요청하는 함수를 호출 2) Kernel이 작업을 완료하면 작업 결과를 반환 받음. 특징 I/O 작업이 진행되는 동안 user Process(Thread) 는 자신의 작업을 중단한 채 대기 Resource 낭비가 심함(I/O 작업이 CPU 자원을 거의 쓰지 않으므로) > Non-Blocking I/O 1)

#2. ethereum 기초 - geth/node/console/계정 unlock
geth console 띄우기 - 노드 실행 여기서는 터미널이 2개가 필요하다! 한개는 geth 를 실행 시켜야 하고, 한개는 attach 로 geth에 붙어야한다. 물론 한 터미널로 할 수있지만, 난 두 개로 해서 나누는게 편해서 해당 글에서는 두개의 터미널로 나누어서 진행할 것이다. terminal 1 예시 1 - 옵션을 하나도 안주는 기본적인 방법 > geth -nodiscover --nousb --datadir . 예시 2 > geth --http --http.addr "localhost" --http.port "8545" --http.corsdomain "*" --http.api "eth,net,web3,personal" --datadir ~/eth --nodiscover --networkid 10 --allow-insecure-unlock --nousb 예시 3 > geth --networkid 4386 --mine --m
4-4.(3) Thread 동기화 Lock
Thread 동기화 : 여러개의 Thread가 공유하여 작업 진행 -> : 문제가 발생할 여지가 있음 -> 임계 영역 : 이 영역을 동기화 처리 문제발생 방지 : 과도한 동기화는 프로그램 성능 저하 -> 필요한 영역만 선별적으로 사용 Lock을 이용한 동기화 처리 T17_LockAccountTest 1. lock 객체 생성 되도록이면 private final로 만든다 : 이유) 외부에서 접근하지 못하도록 상수로 만듦 : ReentranLock 2. lock() -> unlock() Lock 객체의 lock()메서드가 동기화 시작이고, unlock()메서드가 동기화 끝 lock()메서드로 동기화를 설정한 곳에서는 반드시 unlock()메서드로 해제 3. lock을 통해서 동기화 가능 lock.lock(); try~catch 블럭을 사용할 경우 :
Java - 6. Thread: 동기화
동기화 Synchronization 공유자원(객체)을 상대로 순서대로 작업이 이루어지도록 처리하는 방법 과도한 동기화: 전체적으로 프로그램의 성능을 저하시킴 필요한 이유 프로세스 내 자원을 여러개의 스레드가 공유하여 작업 진행시 문제 방지 임계영역(Critical Section, 문제 발생 여지가 있는 영역)에 동기화 처리를 해줌으로써 예방 동기화 처리 방법 synchronized 메서드 자체에 동기화 처리 `public synchronized void add() { ~ }` 여러개의 Thread들이 공유객체의 메소드를 사용할 때 메소드에 synchronized가 붙어 있을 경우 먼저 호출한 메소드가 객체의 사용권(Monitoring Lock)을 얻는다. 메소드 앞에 synchronized 를 붙혀서 실행해 보면, 메소드 하나가 모두 실행된 후에 다음 메소드가 실행된다. 해당 모니터링 락은 메소드