Inventory
-
반응형 확장(RX)@ 17. 1 ~ 18/C# Rx(Reactive Extensions) 2017. 8. 20. 04:50
이벤트 기반 비동기 패턴객체간의 통지를 구현하는 관찰자 디자인 패턴을 간단하게 구현하는 것. 풀기반 방식 푸시기반 방식생산자가 새로운 값에 관해 클라이언트에 통지하는 방식클라이언트가 아무런 일을 하지 않은 상태에서 다른 값을 기다리는 동안에 생산자에게 작업 분담을 허용한다.즉, 값의 순서를 생산하고 소비자에게 순서대로 각 항목을 통지 닷넷 4.0부터 비동기 푸시 기반 컬렉션과 자체 클라이언트를 함께 대표하는IObservable와 IObserver인터페이스 정의를 포함하기 시작했다.이 두 인터페이스는 효율적으로 이벤트의 순서를 조합하고 관찰 가능한 컬렉션을 이용해 실제로 모든 다른 타입의 비동기 프로그램에 도움을 주기위해 RX라이브러리라는게 나온다. 컬렉션을 관찰 가능한 비동기 컬렉션으로 변환Enumera..
-
동시성 컬렉션 사용@ 17. 1 ~ 18/C# 멀티스레드 2017. 8. 20. 04:27
동시성 계산의 경우 적절한 데이터 구조가 필요함.이 데이터 구조는 확장성이 있으며 최대한 잠금을 피하는 동시에 스레드에 안정한 접근을 제공해야한다.닷넷 프레임워크 버전 4에는 여러 데이터 구조를 포함한 System.Collections.Concurrent네임스페이스가 있다. ConcurrentQueue비교하고 둘을 바꾸는 CAS 원자 연산과 SpinWait를 사용하며 스레드에 안전함을 보장한다.당연히 선입 선출. ConcurrentStack 어떠한 잠금을 사용하지 않은 채 CAS 연산만으로도 구현된다.당연히 후입 선출 ConcurrentDictionary스레드에 안전한 딕셔너리 컬렉션읽기 연산에는 잠금이 필요 없지만 쓰기 연산에는 잠금이 필요하다. 쓰기 연산에서는 잠금을 이용한 일반 딕셔너리에 비해 상당..
-
async, await에 대한 설명@ 17. 1 ~ 18/C# 멀티스레드 2017. 8. 19. 13:22
출처 : http://blog.stephencleary.com/2012/02/async-and-await.html 키워드 소개비동기 메서드는 다음과 같다.public async Task DoSomethingAsync() { // In the Real World, we would actually do something... // For this example, we're just going to (asynchronously) wait 100ms. await Task.Delay(100); }async키워드는 해당 메소드에서 await키워드를 사용가능하게 메소드 결과 처리 방법을 변경한다.비동기 메소드의 시작은 다른 메소드와 마찬가지로 실행된다. 즉 , await이 될떄까지 동기적으로 실행한다.await 키워..
-
데드락 걸리는 async 코드@ 17. 1 ~ 18/C# 멀티스레드 2017. 8. 19. 10:14
내용에 대한 출처http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html UI Example아래 예제를 고려하십시오. 버튼을 클릭하면 REST 호출이 시작되고 텍스트 상자에 결과가 표시됩니다 (이 샘플은 Windows Forms 용이지만 모든 UI 응용 프로그램에도 동일한 원칙이 적용됩니다).// My "library" method. public static async Task GetJsonAsync(Uri uri) { using (var client = new HttpClient()) { var jsonString = await client.GetStringAsync(uri); return JObject.Parse(jsonString); ..
-
액티비티 다이어그램 정리@ 16. 1 ~ 17. 1/면접관련 2017. 1. 11. 01:43
플로우차트와 유사한 특징을 갖는다.오퍼레이션(메소드)이나 처리과정이 수행되는 동안 일어나는 활동을 시각적으로 나타낸다.스테이트 다이어그램을 확장한 것으로 볼 수 있다. 조건분기, 병행처리, role에 따른 책임등을 표현할 수 있다. 시작점을 기반으로 활동 상태가 있다..그런데 여기서도 활동상태가 2가지로 나뉜다.Activity State와 Action State로 나뉘게 된다. Activity State - 여러개의 액션으로 이루어진 활동, 외부자극으로 인해 실행 중지가 가능하다. 외부 인터럽트로 가능 Action State - 멈출수 없는 외부의 자극으로도 멈출수 없음 여기서 물끓이기는 외부자극에 의해 중지가 가능함..tv켜기도 마찬가지....근데 라면 끓이기는 이제 action State로 된다. F..
-
콜라보레이션 다이어그램@ 16. 1 ~ 17. 1/면접관련 2017. 1. 11. 01:24
시컨스 다이어그램처럼 객체들간의 교류를 나타낸다.객체들간의 상호 작용을 구조적으로 표현시컨스 다이어그램과 의미상 동일한 기능을 한다.시간에 중점을 둔 시컨스 다이어그램과 달리 전체적인 객체들간의 조직과 교류를 중점으로 표현한다.시컨스 다이어그램과 서로 변환이 가능하다.활성 객체는 메인이 되는 객체를 의미한다. 이친구는 생명선이 없음. 시간의 흐름이 아니니까..활성객체는 두껍게 저기보면 object임..실행할 오퍼레이션 이름 (즉 , 이건 메소드를 이야기한다)앞에 숫자는 순차적인 흐름을 이야기힘..조건은 [ ] 반복은 * result 는 실행결과값 call(input) input은 매개변수..
-
시컨스 다이어그램 정리@ 16. 1 ~ 17. 1/면접관련 2017. 1. 11. 01:12
객체들이 다른 객체들과 어떻게 교류하는 지를 보여준다.시간의 흐름에 따른 객체들간의 상호작용을 표현한다.(스테이트는 특정한 하나의 객체를 가지고 시간에 따라서 어떠한 어떤 상태 조건에 따라서 상태변화를 나타낸것)이건 객체들간의 상호작용이다. 구성요소1. 객체 : 특정 작업에 참여하는 클래스의 인스턴스2. 메시지 : 객체들이 특정 작업을 수행하기 위해 주고받은 정보들오브젝트가 가지고 있는 메서드 호출을 의미3. 시간 객체 왼쪽에서 오른쪽으로 배열된다.생명선(lifeline)과 실행(activation)으로 구성된다. 생명선은 점선 : ------실행은 작은 사각형으로.. 메시지한 객체에서 다른 객체로 전송되는 메시지는 제어흐름이 이동한것이다.객체는 자기자신으로 메시지를 보낼 수 있다.종류1) 동기 메시지2..
-
스테이트 다이어그램 정리@ 16. 1 ~ 17. 1/면접관련 2017. 1. 11. 00:58
특정한 객체, 단일 객체대한 상태 전이를 나타낸다.시스템의 시간에 따른 객체 상태 변화를 모델링한다.특정한 단일 객체가 취할 수 있는 행동에 초점을 둔다. 밑에 그림은 쓰레드에 대한 상태 다이어그램을 나타낸것임..그래서 Initial State상태와 Final State상태가 있음.상태는 둥근 사각형으로 표현하게 된다. 그럼 위에 쓰레드에서는 몇개 상태? 3개임.. Runnable Block Running화살표가 진행방향이다. 즉 전이 transition이라고 한다. [ ]는 뭘까?[sleep] ?? [ ] 은 조건을 표현할때 쓰는데..전이 조건이다.각각 전이가 될때 코멘트?를 달수가 있다 여기선 dead scheduling 을 이야기함 객체는 속성에 상관없이 일정한 동작을 하는 것도 있지만, 특정한 상..