달력

11

« 2019/11 »

  •  
  •  
  •  
  •  
  •  
  • 1
  • 2

 

스레드의 동기화 문제

스레드의 동기화 문제는 다중 스레드일 때 발생가능하며 여러 스레드가 동시에 실행 될 때 2개 이상의 스레드가 동일한 데이터에 접근하여 작업할 경우 문제가 발생할 수 있습니다.

그러므로, 하나의 스레드가 조작하고 있는 공유자원(변수, 데이터)를 다른 스레드가 조작하지 못하도록 하기 위해서 동기화가 필요합니다.

 

동기화 문제 발생


 

 

동기화 처리


 

 

 

Synchronization(동기화)

·       임계영역(Critical Section)에서 스레드들이 순서를 갖춰 자원을 사용하게 하는 것을 동기화하고 합니다.

·       임계영역이란 멀티 스레드에 의해 공유자원이 서로 참조될 수 있는 코드의 범위를 말합니다.

·       , 한 쓰레드가 작업중 다른 쓰레드에 의해 간섭을 받지 못하도록 막는 것을 쓰레드의 동기화하고 합니다.

·       멀티 스레드 프로그램에서 임계영역을 제대로 처리하지 못 하는 경우 심각한 문제가 발생할 수 있습니다.

·       이러한 문제 상황을 해결하는 방법이 동기화를 이용하는 것입니다. 그래서 하나의 자원을 한번에 하나의 스레드만 사용하도록 하는 기술입니다.

·       동기화 메소드를 구현하기 위해서는 synchronized 키워드를 사용하여야 합니다.

·       동기화 메소드를 스레드가 호출할 경우 이미 접근한 스레드가 작업을 완료할 때까지 기다려야 접근할 수 있습니다.

 

·       동기화를 처리하기 위해 모든 객체에 락(lock)을 포함 시켰습니다.

·       (lock)이란 공유 객체에 여러 스레드가 동시에 접근하지 못하도록 하기 위한 것으로 모든 객체가 힙 영역에 생성될 때 자동으로 만들어 집니다.

 

 

 

synchronized 흐름도


 

 

 

Thread 관련 용어

구분

설명

공정

(fairness)

여러 개의 스레드가 하나의 컴퓨팅 자원을 사용하기 위해 동시에 접근하는 프로그램을 작성할 경우 모든 스레드는 공정하게 그 자원을 사용할 수 있도록 해 주어야 합니다.

기아상태

(starvation)

하나 또는 그 이상의 스레드가 자원을 얻기 위해 Blocked 상태에 있고, 그 자원을 얻을 수 없게 되면 다른 작업을 못하는 상태를 말합니다.

교착상태

(deadlock)

두 개 이상의 스레드가 만족하지 못하는 상태로 계속 기다릴 때 발생합니다.

경쟁상태(race condition)

여러 쓰레드가 lock(제어권)을 얻기 위해 서로 경쟁하는 상태를 말합니다.

 

 

 

Thread를 사용할 경우 주의

·       가급적 공유자원 만들지 말 것.

·       공유자원을 만들 경우 반드시 적절한 방법으로 동기화 할 것.

 

Posted by codedragon codedragon

댓글을 달아 주세요


 

 

 

프레임워크(Mock framework)

·         객체를 활용한 테스트는 직접 개발자가 객체를 만들어야 합니다.

·         객체를 만드는 것은 시간 · 노력이 필요합니다.

·         이미 만들어져 있는 프레임워크를 활용하여 쉽게 객체 활용이 가능합니다.

·         해당 라이브러리만 세팅하면 쉽게 객체를 활용 가능

 

 

 

대표적인  프레임워크

·         EasyMock

·         Jmock

·         Mockcpp

·         Googlemock

 


Posted by codedragon codedragon

댓글을 달아 주세요

 

 

워크숍

워크숍은 어떠한 목적을 달성하기 위하여 전문 진행자의 진행 아래 프로젝트의 현업 부서 측과 전산 부서 측의 주요 구성원들이 함께 참여하는 회의이다.

 

 

워크숍 사전준비 사항

워크숍을 통해 달성해야 목표와 구체적인 논의 사항들을 도출하기 위해서 사전 준비가 필요합니다.

 

·         워크숍 과제 선정과 계획 수립

·         참가 대상자 선정

·         참가 대상자에 대한 사전 브리핑 교육 훈련

·         킥오프 모임 수행

·         워크숍 자료 준비

·         설비와 물품 준비

·         워크숍 장소 선정

·         워크숍 기간 선정 프로그램 준비

https://codedragon.tistory.com/9302

 


Posted by codedragon codedragon

댓글을 달아 주세요

2019. 11. 27. 01:00

XML vs CSV Development/Python


 

 

XML vs CSV

CSV 특징입니다.

XML

CSV

이진파일

텍스트파일

데이터 타입 존재

모든값이 문자열

셀의 폰트나 컬러 지정가능

폰트나 컬러 지정가능 불가

여러 개의 워크시트 존재

하나의 워크시트만 존재

셀의 너비와 높이 설정가능

셀의 너비와 높이 설정 불가

병합 가능

병합 없음

이미지, 차트등을 포함

문자열외 포함 불가

 

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

SQOOP(스쿱)

·         아파치 스쿱

·         하둡의 입력을 파일에서 RDBMS 사용할 있게 해줍니다. RDBMS데이터를 하둡에서 접근할 있게 만들어줍니다.

·         1.4에서 2.x 변경되면서 클라이언트/서버형태로 변경되었습니다.

 

 

http://sqoop.apache.org/


 

http://bit.ly/2sc4AmE

 


Posted by codedragon codedragon

댓글을 달아 주세요