⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_win.c

📁 用c/c++实现的一个CMPP API
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <conio.h>#include "os.h"#include "datatype.h"#include "cmppapi.h"#include "cmppmutex.h"#include "event.h"RecMutex    m_test_mutex;recEvent	m_test_event;void ServerProc1(void *pPara){	int i;	printf("start ServerProc1\n");	for(i = 0; i < 100; i++)	{		Sleep(rand()%100);		nMutexLock(&m_test_mutex);		printf("LOCK BY PROC1 TIME %d...\n", i);		nMutexUnlock(&m_test_mutex);	}	printf("end ServerProc1\n");}void ServerProc2(void *pPara){	int i;	printf("start ServerProc2\n");	for(i = 0; i < 100; i++)	{		Sleep(rand()%100);		nMutexLock(&m_test_mutex);		printf("LOCK BY PROC2 TIME %d...\n", i);		nMutexUnlock(&m_test_mutex);	}	printf("end ServerProc2\n");}void ServerProc3(void *pPara){	int i;	printf("start ServerProc3\n");	for(i = 0; i < 100; i++)	{		Sleep(rand()%2000);		while(nTimedWaitEvent(&m_test_event, INFINITE) < 0)			printf("PROC3 wait event....\n");		printf("EVENT BY PROC3 TIME %d...\n", i);	}	printf("end ServerProc3\n");}void ServerProc4(void *pPara){	int i;	printf("start ServerProc4\n");	for(i = 0; i < 100; i++)	{		Sleep(rand()%2000);		while(nTimedWaitEvent(&m_test_event, INFINITE) < 0)			printf("PROC4 wait event....\n");		printf("EVENT BY PROC4 TIME %d...\n", i);	}	printf("end ServerProc4\n");}void ServerProc5(void *pPara){	int i;	printf("start ServerProc5\n");	for(i = 0; i < 100; i++)	{		Sleep(rand()%2000);		while(nTimedWaitEvent(&m_test_event, INFINITE) < 0)			printf("PROC5 wait event....\n");		printf("EVENT BY PROC5 TIME %d...\n", i);	}	printf("end ServerProc5\n");}void ServerProc6(void *pPara){	int i;	printf("start ServerProc6\n");	for(i = 0; i < 100; i++)	{		Sleep(rand()%2000);		while(nTimedWaitEvent(&m_test_event, INFINITE) < 0)			printf("PROC6 wait event....\n");		printf("EVENT BY PROC6 TIME %d...\n", i);	}	printf("end ServerProc6\n");}int main (int argc, char *argv[]){	int i;	printf("start main.\n");	if(argc != 2)	{		printf("cmd [m,e]\n");		return -1;	}	switch(argv[1][0])	{		case 'm':		case 'M':			{				if(nMutexInit(&m_test_mutex) != MUTEX_OK)				{					printf("init mutex fail.\n");					return -1;				}				_beginthread(ServerProc1,// Thread procedure.                        							 0,							 NULL);				_beginthread(ServerProc2,// Thread procedure.                          							 0,							 NULL);			}			Sleep(20000);			nMutexDestroy(&m_test_mutex);			break;		case 'e':		case 'E':			{				if(nInitEvent(&m_test_event) != EVENT_OK)				{					printf("init event fail.\n");					return -1;				}				_beginthread(ServerProc3,// Thread procedure.                        							 0,							 NULL);				_beginthread(ServerProc4,// Thread procedure.                          							 0,							 NULL);				_beginthread(ServerProc5,// Thread procedure.                          							 0,							 NULL);				_beginthread(ServerProc6,// Thread procedure.                          							 0,							 NULL);				for (i = 0; i < 10; i++)				{					Sleep(300);					nSetEvent(&m_test_event);				}			}			Sleep(200000);			nDestroyEvent(&m_test_event);			break;		default:			printf("cmd [m,e]\n");			return -1;	}		printf("end main.\n");    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -