2014-06-08 4 views
2

저는 현재 새로운 코 루틴 인스턴스를 꽤 자주 할당하고 있습니다 (내 대답 here의 코드를 참조하십시오).코 루틴 - 재사용?

이 오버 헤드는 사소하지 않습니다.

나는 이전에 할당 된 코 루틴을 재사용함으로써 비용을 줄이는 방법이 있다고 생각하겠습니까?

어떻게 이것을 달성 할 수 있는지 잘 모르시겠습니까?

코 루틴 Allocator에 boost :: pool을 사용할 수 있습니다. 그러나 비싸지 만 StackAllocator은 작동하지 않습니다 ...

답변

2

코 루틴은 스택과 제어 블록 (보존 된 레지스터, 스택의 가장자리에 놓임)을 포함합니다. coroutine 자체를 재사용 할 수는 없지만 스택을 미리 할당하고 캐시하는 자체 스택 할당기를 작성할 수 있습니다. 새로 생성 된 동시 루틴은 캐시에서 이미 할당 된 스택을 다시 사용할 수 있습니다.

+0

쓰기 스택 할당자를 작성하는 것을 피할 수있는 방법이 있습니까? 나는. 그러한 할당 자 (allocator)가 이미 존재한다면, 자신의 것을 다시 작성하는 것보다는 그것을 사용하는 것이 더 낫습니다. – vralex

관련 문제