프로토트레드
Protothread프로토트립은 동시 프로그래밍을 위한 오버헤드가 낮은 메커니즘이다.
프로토트레드는 스택리스, 경량 나사산 또는 코루틴으로 기능하여 프로토트레드당 최소 메모리(단일 바이트 순)를 사용하여 차단 컨텍스트를 저렴하게 제공한다.
프로토트립은 협력 멀티태스킹이라고 알려진 사전 예방되지 않은 형태의 동시성을 달성하는 데 사용되므로 다른 스레드에 양보할 때 컨텍스트 전환이 발생하지 않는다.원자형 내에서, 수율은 나사산 함수 내에서 더프의 장치와 스위치 문 내에서 사용되는 외부 변수를 활용하여 달성된다.이를 통해 다른 함수 호출 시 항복에서 점프(리슈밍)할 수 있다.실을 차단하기 위해서, 이러한 수확량은 가드 조건부가 사실이 아닌 한 동일한 기능에 대한 연속적인 호출이 산출되도록 조건부로 보호될 수 있다.
코루틴 또는 적절한 스레드의 다른 구현에 상대적인 프로토트립의 특징은 스택이 없다는 것이다.이것은 장단점이 있다.단점은 원점 판독기 내의 국지적 변수가 수율을 넘어 다른 맥락으로 자신의 값을 유지한다고 신뢰할 수 없다는 것이다.그들은 정적 또는 외부, 종종 글로벌한 변수의 사용을 통해 상태를 유지해야 한다.[1]장점은 매우 가벼워서 다른 솔루션이 비실용적이거나 덜 바람직한 소형 마이크로컨트롤러와 같은 심각한 메모리 제약 시스템에 유용하다는 것이다.
더프의 장치 명성의 톰 더프는 그 방법의 단점에 대해 이렇게 말하게 되었다: "너무 무시무시해서 들어갈 수 없는 인터럽트식 국가 기계에 대한 유사한 속임수. [...] 코루틴의 여러 번 동시 활성화가 쉽지 않고 포스(pos)도 아니기 때문에 적절한 범용 코루틴 구현이라고 생각해 본 적이 없었다.이 방법을 사용하여 코루틴이 최상위 루틴을 제외한 모든 곳에서 제어를 포기하도록 할 수 있다.간단한 조립 언어 스택 전환 라이브러리를 통해 두 가지 작업을 모두 수행할 수 있다."[2]
프로토트레드 개념은 아담 던켈스와 올리버 슈미트가 사이먼 태텀과[4] 톰 더프의 선행 연구를 바탕으로 개발했다.[3][2]
참고 항목
참조
- ^ A. 던켈스, O. 슈미트, T. 보이그트, M.알리, 프로토트레드: 메모리 제약 임베디드 시스템의 이벤트 기반 프로그래밍 단순화, Proc.ACM SenSys, Boulder, CO, 2006년 11월(PDF, 프레젠테이션 슬라이드)
- ^ a b "Brainwagon » Coroutines in C".
- ^ Adam Dunkels. "Protothreads - Lightweight, Stackless Threads in C". Dunkels.com. Retrieved April 21, 2017.
- ^ "Coroutines in C".
외부 링크
- 콘티키가 사용하는 C의 프로토트레드 도서관
- 센서 노드 프로그래밍에 프로토트레드 사용 PDF와 프로토트레드 사용에 대한 심도 있는 토론
- GCC가 필요한 프로토트레드 라이브러리에는 UNIX 커널을 모델로 한 스레드 스케줄러(POSIX 조건변수의 단순화된 형태)가 포함되어 있다.이 소스 베이스에는 여러 CPU 코어(프로세서)를 지원하는 버전도 포함되어 있다.
- 아마존닷컴은 POSIX 스레드와 프로토트립을 비교한 결과, 속도가 400배 향상되었다[1] 2014년 10월 Archive.org에서 검색됨
- C++ 프로토트레드
- Symbian C++ Prototred 구현