2012-10-28 1 views
-1

나는 많은 수의 스레드를 생성해야하는 프로젝트에서 작업 중이다. 실제 숫자는 테스터 (TA)가 입력한다. 프로그래밍뿐만 아니라 디자인에서도 문제가 발생합니다. 호출 될 스레드와 오류가 발생할 수있는 부분을 모두 감쌀 수 없습니다. 프로젝트가 곧 만기가되었으므로 실제로 시간을 낭비하고 싶지는 않습니다. 실제로이 프로그램을 다시 쓰면,하지만 하나의 쓰레드가 실행 중이고 모든 것이 순차적이어야하고 나중에 나올 때처럼 프로그램을 작성해야하는지 궁금합니다. 돌아가서 코드의 스레드 안전 부분을 추가하려고합니까? 원래 시간의 두 배 걸릴까요?동시 프로그래밍 : 순차 프로그램을 먼저 작성한 다음 스레드 안전을 추가해야합니까?

프로젝트 설명 : 참고 : :(나는 내가 어떤 영광 코드를 위반하지 가능한 모호한 될거야, 미안

objectA 스레드 n 개의의 m 번호를 받아 들여야 프로그램 . objectB 스레드 및 objectC

의 R 번호

objectB 스레드 objectA 스레드가 objectB 및 objectC objectB 및 objectC 직접 상호 작용하지 않는 코드와 상호 작용 objectA 코드와 상호 작용하지만, objectA -ex를 통해 이렇게 간접적으로 수행 objectB에는 objectA에서 무언가가 필요합니다 .objectA는 무언가에 대한 결과를에 의해 얻습니다.calling objectC

내 혼란은 대부분이 상호 작용이 m + n 개의 스레드에 의해 이루어지고 설명을 통해 다양한 제한이 있다는 사실에서 비롯됩니다. 예를 들어 objectB는 objectA에서 무언가를 요청할 수 있으며 objectA는 기다려야합니다. objectC를 반환하여 objectB에 반환합니다. 또한 각 objectA 스레드는 한 번에 하나의 objectB에서 작업 할 수 있습니다.

나는 단지 하나의 objectA, 1 개의 objectB 및 1 개의 object C가있을 수 있도록 코드를 작성했는지 알고 싶습니다. 나는 되돌아 가서 쉽게 1을 m, n, r로 바꿀 수 있도록 쉽게 수정한다.

죄송합니다. 내 설명이 조금 혼란 스럽다면.

+0

실제 프로젝트에 대해 조금 설명해 주시겠습니까 – jozefg

+0

서로를 기다려야하는 n> 1 개의 스레드가 필요하지는 않습니다. – ignis

+0

@ignis, 각 개체를 실생활에서 무언가로 생각하십시오. 예를 들어, objectA는 기계공, objectB는 자동차 등입니다. – evthim

답변

1

하나의 스레드 만 실행되고 모든 것이 순차적이어야하고 나중에 다시 돌아가서 코드의 스레드 안전 부분을 추가하려고하면 프로그램을 작성해야하는지 궁금합니다.

나는 최소한의 스레드로 작업하는 프로그램을 얻을 것이다. 그런 다음 여러 스레드를 사용하도록 다시 작성합니다. 이 작업을 수행 할 수있는 작업량을 과소 평가해서는 안되며, 수행 할 때 모든 가정을 다시 방문해야합니다.

원래 시간의 두 배가 걸립니까?

길이가 두 배는되지만 작동하기 쉽습니다. 한번에 모든 것을 시도한다면, 전혀 작동하지 않는 것보다 엉망이 될 가능성이 큽니다. 노력에 대한 점수가 주어지며 때로는 스레드 안전 버그를 얻는 것이 중요하지 않은 경우 모두 한 번에 접근하면 최상의 점수를 얻을 수 있습니다. 전문적으로 개발한다면, 여러 스레드를 사용하는 희귀하고 재현 불가능한 오류가있는 것보다 한 스레드로 작업하는 것이 더 좋습니다.