- 다빈치 리졸브
- Front-end developer
- postman csv
- postman automations
- postman excel
- Interaction developer
- Android/iOS Developer
- c#
- solidity
- oracle
- Java
- Intellij
- postman session
- postman tests
- MFC
- postman html parse
- postman collection
- web developer
- UI/UX Engineer
- LSL_Script
- postman
- 좋은 개발자
- C++
- emplace_back
- 우수한 프런트 개발자
- 프런트엔드
- postman pre-request
- Unity
- postman collection variables
- Android
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- Today
- Total
david's daily developer note
[Native] APC (Asynchronous Procedure Call) 본문
새로운 버전의 SDK에서 APC를 조작할 수 있는 인터페이스가 추가되어
간략하게 개념 정리를 해보려한다.
APC는 Asynchronous Procedure Call의 약자이다.
함수를 직접 호출하는(synchronous) 방식과 다르게 특정 시점에 불리는 Callback과 같다.
APC는 스레드의 특정상태에서 불리는 Callback을 등록하며, 등록 대상이된 스레드가 호출하는 것을 보장한다.
스레드 호출 보장은 어떻게 가능할까?
윈도우 스레드는 개별적으로 APC Queue를 가지고 있기 때문에, 구분하여 적재 가능하다.
APC Queue 적재는 아래 API를 사용한다. (인자는 순서대로 CALLBACK 함수, 스레드핸들, 파라메터이다.)
WINBASEAPI
DWORD WINAPI
QueueUserAPC(
_In_ PAPCFUNC pfnAPC,
_In_ HANDLE hThread,
_In_ ULONG_PTR dwData
);
APC Queue에 적재된 노드는 언제 호출될까?
APC Queue의 노드는 해당 스레드가 Alertable 상태일 때, 순차적으로 호출한다.
Alertable 상태는 다음의 함수들을 호출하여 만들수있다.
::WaitForSingleObjectEx ( .. _In_ BOOL bAlertable )
::WaitForMultipleObjectsEx ( .. _In_ BOOL bAlertable )
::SleepEx (.. _In_ BOOL bAlertable )
https://docs.microsoft.com/en-us/windows/desktop/sync/asynchronous-procedure-calls
'[Develop] Native > Native' 카테고리의 다른 글
[Native] Visual Studio Code Snippet (*.Snippet) (0) | 2018.09.28 |
---|---|
[Native] Visual Studio Visualizers (*.natvis) (0) | 2018.08.17 |
[Native] LNK2005 해결 (0) | 2012.05.18 |
[Native] CFONT (0) | 2012.04.12 |
[리소스 편집기] 메뉴 아이템 삽입 후 리소스아이디가 께지는 현상 (0) | 2012.04.12 |