C++多个线程调用同一个dll中的一个函数,如何知道有多少个线程同时进入了这个函数体

C++多个线程调用同一个dll中的一个函数,怎么知道有多少个线程同时进入了这个函数体
C++多个线程调用同一个dll中的一个函数,但是要求这个函数同一时刻只能被有限个线程调用。因为这个函数使用了一些有限资源,当资源不够时,希望该函数直接返回。dll函数是用“C”方式导出的。抱歉,没多少分了,拜谢各位大神。
------解决方案--------------------
CRITICAL_SECTION cs;

InitializeCriticalSection(&cs);

int Limit4ThreadCalled() {
    static DWORD ThreadIDs[4];
    int it;
    DWORD tid;
    EnterCriticalSection(&cs);
    tid=GetCurrentThreadId(VOID);
    for (it=0;it<4;it++) {
        if (ThreadIDs[it]==tid) break;
        if (ThreadIDs[it]==0) {
            ThreadIDs[it]=tid;
            break;
        }
    }
    LeaveCriticalSection(&cs);
    if (it>=4) return 1;
    //...

    EnterCriticalSection(&cs);
    ThreadIDs[it]=0;
    LeaveCriticalSection(&cs);
    return 0;
}

DeleteCriticalSection(&cs);

------解决方案--------------------
在DllMain中
fdwReason
为DLL_PROCESS_ATTACH时InitializeCriticalSection
为DLL_PROCESS_DETACH时DeleteCriticalSection