MoonNote

반응형

 


Which function will execute FIRST?

1. Subtract

2. Increment

3. Add

4. There is no way to tell


정답 보기는 아래 더보기 클릭

 

더보기

정답 : 4. There is no way to tell

 LabVIEW 데이터 흐름과 관련된 코드 문제이다. 기본적으로 LabVIEW는 위에서 아래 또는 좌에서 우로 데이터 흐름의 방향을 권장하고 있다. 해당 문제의 코드도 일단 노드([Add], [Subtract], [Increment]) 좌측에는 입력과 관련된 컨트롤들이 위치해있고 우측에는 출력과 관련된 인디케이터가 위치해있다. 따라서, 좌에서 우로 데이터 흐름을 따라가보자.

 문제는 코드 실행시 가장 먼저 실핼 될 것 같은 노드를 찾는 것이다. 블록다이어그램의 소스 코드를 살펴보면 [Add]와 [Increment] 노드 중 하나가 가장 먼저 실행될 것처럼 보인다. 위의 설명에서 LabVIEW의 기본 데이터 흐름이 위에서 아래 또는 좌에서 우라고하여서 무턱대고 [Add]를 찍으면 틀리기 쉽상인 문제이다. LabVIEW 기본 흐름의 방향성을 권장할 뿐이지 이 문제에서는 [Add]와 [Increment] 두 노드 사이에 따로 입력과 관련된 연관성이 없다. 여기서 말한 연관성이란 LabVIEW는 와이어링 방식으로 코드를 작성하므로 [Add]와 [Increment] 노드 사이에 와이어링 연결이 없다는 뜻이다. 이럴 경우 두 노드는 와이어링 방식의 시퀀스가 잡혀있지 않으므로 LabVIEW는 실행할 때마다 [Add]가 먼저 실행될수도 있고 [Increment] 노드가 먼저 실행될 경우도 있다고 볼 수 있다.

 LabVIEW에서는 이를 경합 조건(Race Condition)이라고 부른다. 따라서 정답은 "4. There is no way to tell"이다

위키백과, Race Condition

 

경쟁 상태 - 위키백과, 우리 모두의 백과사전

논리 상태에서의 경쟁 상태 공학 분야에서 경쟁 상태(race condition)란 둘 이상의 입력 또는 조작의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태를 말한다. 입력 변화의 타이밍이나 순서

ko.wikipedia.org

 

 

 

 

 

※ 이 글이 도움이 되었다면 "🤍공감" 버튼을 클릭해주세요. 클릭 한번이 글 쓰는데 큰 힘이 됩니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band