#include "erpc_core.h" #include #include HANDLE hMutex; static void lock() { WaitForSingleObject(hMutex, INFINITE); } static void unlock() { ReleaseMutex(hMutex); } static void sleep(u32 ms) { Sleep(ms); } extern erpc_hw_t port_self; static u32 erpc_send(u8 *data, u16 len) { write_rec_cache(&port_self,data,len); } erpc_hw_t port_self = { .lock = lock, .unlock = unlock, .sleep = sleep, .local_id = 0x12, .send = erpc_send, }; static void test1(){ } DWORD WINAPI fun(LPVOID lpParam) { UNUSED(lpParam); while (1) { Sleep(1000); } } DWORD WINAPI send_thread(LPVOID lpParam) { UNUSED(lpParam); while (1) { send_core(&port_self); Sleep(1); } } DWORD WINAPI recv_thread(LPVOID lpParam) { UNUSED(lpParam); while (1) { recv_core(&port_self); Sleep(1); } } DWORD WINAPI recv_handle_thread(LPVOID lpParam) { UNUSED(lpParam); while (1) { recv_handle(&port_self); Sleep(1); } } int main() { hMutex = CreateMutex(NULL, FALSE, TEXT("MyMutex")); if (hMutex == NULL) { printf("CreateMutex error: %d\n", GetLastError()); return 1; } HANDLE hThreads[4]; hThreads[0] = CreateThread(NULL, 0, fun, NULL, 0, NULL); hThreads[1] = CreateThread(NULL, 0, send_thread, NULL, 0, NULL); hThreads[2] = CreateThread(NULL, 0, recv_thread, NULL, 0, NULL); hThreads[3] = CreateThread(NULL, 0, recv_handle_thread, NULL, 0, NULL); // 等待所有线程完成 WaitForMultipleObjects(4, hThreads, TRUE, INFINITE); // 关闭线程句柄 for (int i = 0; i < 4; i++) { CloseHandle(hThreads[i]); } // 关闭Mutex句柄 CloseHandle(hMutex); return 0; }