문제

ADA95에서 스레드를 어떻게 사용할 수 있습니까? 제작, 파괴, 중지 및 시작하는 데 어떤 기능을 사용할 수 있습니까?

이 언어로 세마포어를 어떻게 사용할 수 있습니까?

도움이 되었습니까?

해결책

스레드에 대한 Ada의 용어는 "작업"입니다. Ada는 구호 (그와 같이)를 언어로 직접 제작하지는 않지만 "Ada Semaphore"와 같은 인터넷 검색은 상당한 수의 히트를 나타냅니다. adapower.com, 특히, ADA의 동시 프로그래밍에 대해 상당히 많이 있습니다 (그리고 그 문제에 대해 ADA의 거의 모든 종류의 프로그래밍).

다른 팁

동시성은 언어에 내장되어 있으므로 작업 (예 : 스레드) 및 보호 된 객체 (즉, 세마포르 / 뮤트 / 조건부 변수보다 강력한 보호 된 객체에 대한 특정 ADA 구문이 있습니다. 이것은 C / Java와 같은 다른 언어보다 ADA에서 멀티 스레드 앱을 프로그래밍하는 훨씬 쉽고 오류가 발생하기 쉽습니다.

ADA에서 세마포어를 사용하는 것이 좋습니다. 보호 된 물체는 훨씬 더 강력합니다 (그러나 필요한 경우 보호 된 물체를 사용하여 쉽게 구축 할 수 있습니다).

일부 작은 구문 예제. 작업 (및 보호 된 개체)은 정적 일 수 있습니다 ...

task My_Task;

task body My_Task is
begin
   -- Just print this to stdout and exit thread
   Ada.Text_IO.Put_Line("Hello, concurrent World!");
end;

... 또는 동적으로 만들어졌습니다

task type My_Task_Type(N : Natural);

task body My_Task_Type(N : Natural) is ...

...

T1 := new My_Task_Type(100);

abort T1;

다른 언어보다 훨씬 덜 장점 (그리고 더 많은 수석)! 동적 작업 관리를위한 'New'및 'Abort'키워드를 참조하십시오.

세마포어는 일반적으로 2 개의 파일 (파일 확장자 .adb 및 .ads)을 사용하여 '구성'(오히려 맞춤 제작)이어야합니다. 세련된 세마포어는 3 개의 파일이 필요할 수 있습니다 (Ada의 동시 및 실시간 프로그래밍 참조 'Alan Burns 및 Andy Wellings. ). ADA에는 스레드가없고 오히려 작업이 있습니다.

세마포어를 사용하여 ADA의 동기화를 위해 내 블로그 스팟에 기사가 표시 될 수 있습니다! http://3chevrons.blogspot.com/2010/02/semaphores-in-dada.html

나는 당신이 ADA를 C의 동시성과 Python의 실을 동시성으로 연관 시키려고한다고 생각합니다. 그러나 ADA는 다소 다르게 호소합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top