2010-05-05 3 views
1

동시 메서드를 얻는 방법?동시 메서드를 얻는 방법

type test struct { 
    foo uint8 
    bar uint8 
} 

func NewTest(arg1 string) (*test, os.Error) {...} 

func (self *test) Get(str string) ([]byte, os.Error) {...} 

나는 방법 Get()에 대한 모든 코드가 go func()의 내부 넣어되어야하고 채널을 사용할 수 있다고 생각합니다. 이 Get()에서 다른 방법을 불리는 경우

func (self *test) Get(str string) ([]byte, os.Error) { 
    go func() { 
     // Code for this method. 
    }() 
} 
  • 는 문제가있을 것인가? 또는 동시성이 있어야합니까?
+1

진실을 말하면 질문은 분석하기가 약간 어렵습니다. – bortzmeyer

답변

1

은 이동 문 및 채널을 사용하여 동시 수상 체를 구현하는 완전한 이동 패키지 인 이동 언어 사양의 An example package 섹션을 살펴보십시오.

작동 원리에 대한 자세한 내용은 Prime numbers에있는 자습서 섹션을 참조하십시오. 또한 Go 튜토리얼 섹션 (Multiplexing)을 살펴보십시오.

Concurrency의 유효 실행 절을 읽으십시오.

마지막으로 Go Language 사양의 관련 섹션을 읽으십시오. Go statements, Channel typesSelect statements에 대한 섹션

예, Get() 메서드에서 다른 메서드를 호출 할 수 있습니다. 메소드 호출은 동시 go 문이 아니므로 다음 명령문을 실행하기 전에 즉시 실행됩니다.

1

당신은 이동의 동시성을 얻는 방법은 당신이 동시에 실행하고자하는 기능의 앞에 "이동"키워드를 사용하는 것입니다

FUNC 바() {...}

FUNC foo는() { 이동 바() 이동 바() 이동 바() ... 모든 바 닫으을 기다리는 코드 ... }가에서 3 줄을 실행하는 데 걸리는 전부

같은 시간. 추신 : 익숙한 언어로 예제를 제공하고 싶다면 C++/Perl/Python/포함 된 코드 조각이별로 도움이되지 않았기 때문에 무엇이든 할 수 있습니다. 나는 당신이 모국어를 말하는 것보다 아마도 영어를 더 잘 능숙하게 사용한다는 것을 알고 있습니다.하지만 질문을보다 명확하게 설명하기 위해 도움을 얻을 수도 있습니다. 호테이