태그 - TIL, nomadcoder, 개발자북클럽, 노개북, 서평, 책
동시성과 병렬성 ?
동시성은 둘 이상의 코드조각이 동시에 실행중인것 처럼 행동하는 것이고, 병렬성은 실제로 동시에 실행되는 것이다. 동시성을 고려하지 않고 코드를 작성하기란 거의 불가능하다.
시간적결합이란?
소프트웨어의 설계요소에서의 시간의 역할이 있다. 동시성(동시에 일어나는 일)과 순서(시간의 흐름속에 일어나는 상대적 위치)이다.
프로그래밍할때 두 측면 모두 특별히 신경쓰지 않는다. 아키텍처를 설계하거나 프로그램을 짜기 시작할때 직선적 사고 를 하기 마련이다. 메서드 A는 언제나 A메서드 B보다 먼저 호출해야한다. 똑은 딱보다 먼저일어나야한다. 이러한 접근방식은 그다지 유연하지가 않고 현실과 동떨어져있다.
동시에 일어나도 되는게 뭐고, 반드시 순서대로 일어나야 하는 건 어떤것인지 알아야한다. '활동 다이어 그램' 같은 표기로 작업의 흐름을 기록하는것도 하나의 방법이다.
활동 다이어그램을 사용하면 동시에 수행할 수 있는데도 아직 동시에 하고 있지 않는 활동들을 찾아내 병렬성을 극대화 할 수 있다.
<바텐더의 '피냐콜라다' 만들기>, 1,2,4,10,11번은 제일먼저 동시 수행하는 일들이다.
활동다이어그램은 동시에 작업할 수있는 부분들을 보여준다. 하지만 진짜 동시에 하는것이 좋은지 알려주지않는다. 위의 예시처럼 1,2,3,4,11 번 예시 모두 동시에 하려면 손이 다섯개는 필요하다!
그러므로 설계가 필요하다. 동시성을 고려한 설계를 찾아야 한다.
(뷰어기준 272 , 책 247 page)
동시성은 소프트웨어, 병렬성은 하드웨어가 하는것이다. 커다란 작업을 독립적인 부분들로 쪼개어 각각 컴퓨터 프로세서에 일을 처리하게 한다음 결과를 합치는것이다. 혹은 여러모듈로 쪼개어 컴파일링한다. 이런 방식 덕분에 가용코어를 활용한 빠른 컴파일이 가능하다.
세미포어는 단순히 한번에 한사람만 가질 수 있는 무언가 이다. 내용물을 바꾸고 싶다면 세미포어를 소유하고있을경우 바꿀수 있다는 규칙을 도입하는 것이다. 하지만 모두 세미포어 를 가지고 있어야만 작동한다. 약속을 지키지않는 개발자가 자기만의 코드를 쓴다면 혼돈에 빠질수밖에없다.
책(뷰어 기준, 283page, 258)
'엑터'는 비공개지역 상태를 가진 가장 독립적인 가상 처리 장치이다. 메시지를 처리할때 액터과정 다른 액터를 생성하거나, 알고있는 다른 액터에게 메시지를 보내준다.
책(뷰어기준 284, 260page )
칠판은 자료가 쌓이면 무엇인가 연결고리를 찾아내 자신의 관찰이나 추측을 붙이기도한다.
메시징 시스템을 칠반으로 사용할 수있고, 어러 액태를 선행하는 플랫폼으로도 사용 할 수 있다.심지어 둘다 모두 사용할 수있다.
이번 주제 역시 어렵다고 많이 느껴진다.
35번과 36번은 이해하기 다소 힘들었다 책을 여러번 읽어야 그나마 소화가 될듯싶다.