请高手帮我看看我这些函数是不是有问题
创建线程:CIOS_task_t* CIOS_thread_create(void (*entry_point)(void*),void *arg,int stack_size,int prio,char*name)
{
Thread file;
CIOS_task_t TID;
file = CreateThread(NULL,stack_size,(LPTHREAD_START_ROUTINE)entry_point,NULL,0,&TID);
if( file == INVALID_HANDLE_VALUE )
{
printf("failed to create thread\n");
return 0;
}
SetThreadPriority(file,prio);
return TID;
}
使线程等待一段时间void CIOS_thread_wakeafter(unsigned int ms)
{
int error_code;
Thread file;
Sleep(ms); // sleep time in milliseconds
}
创建一个信号量CIOS_semaphore_t CIOS_semaphore_create(unsigned int initial_value)
{
semaphore_t semaphore;
char *lpName = "semaphore"; semaphore = CreateSemaphore(NULL,initial_value, 100,lpName);
这里是不是要openSemaphore?
return semaphore;
}结束信号量void CIOS_semaphore_delete(CIOS_semaphore_t semaphoreID)
{
CloseHandle(semaphoreID);
}
释放信号量
void CIOS_semaphore_send(CIOS_semaphore_t semaphoreID)
{
ReleaseSemaphore( semaphoreID, 1, NULL);
}等待信号量
int CIOS_semaphore_wait(CIOS_semaphore_t semaphoreID)
{
int error_code;
error_code = MsgWaitForMultipleObjects(1,&semaphoreID, FALSE, INFINITE, QS_ALLEVENTS );
if(error_code == WAIT_TIMEOUT)
return 0;
else
return 1;
}
等待信号量(有时间控制)
int CIOS_semaphore_Twait(CIOS_semaphore_t semaphoreID, unsigned int ms)
{
int error_code;
error_code = MsgWaitForMultipleObjects(1,&semaphoreID, FALSE, ms, QS_ALLEVENTS );
if(error_code == WAIT_TIMEOUT)
return 0;
else
return 1;
}
我一共有6个进程,进程与进程之间是用缓冲进行通信,我现在用一个进程往一个进程发数据,为什么有的时候收到,有的时候没收到,是不是我写的东西有问题?
创建线程:CIOS_task_t* CIOS_thread_create(void (*entry_point)(void*),void *arg,int stack_size,int prio,char*name)
{
Thread file;
CIOS_task_t TID;
file = CreateThread(NULL,stack_size,(LPTHREAD_START_ROUTINE)entry_point,NULL,0,&TID);
if( file == INVALID_HANDLE_VALUE )
{
printf("failed to create thread\n");
return 0;
}
SetThreadPriority(file,prio);
return TID;
}
使线程等待一段时间void CIOS_thread_wakeafter(unsigned int ms)
{
int error_code;
Thread file;
Sleep(ms); // sleep time in milliseconds
}
创建一个信号量CIOS_semaphore_t CIOS_semaphore_create(unsigned int initial_value)
{
semaphore_t semaphore;
char *lpName = "semaphore"; semaphore = CreateSemaphore(NULL,initial_value, 100,lpName);
这里是不是要openSemaphore?
return semaphore;
}结束信号量void CIOS_semaphore_delete(CIOS_semaphore_t semaphoreID)
{
CloseHandle(semaphoreID);
}
释放信号量
void CIOS_semaphore_send(CIOS_semaphore_t semaphoreID)
{
ReleaseSemaphore( semaphoreID, 1, NULL);
}等待信号量
int CIOS_semaphore_wait(CIOS_semaphore_t semaphoreID)
{
int error_code;
error_code = MsgWaitForMultipleObjects(1,&semaphoreID, FALSE, INFINITE, QS_ALLEVENTS );
if(error_code == WAIT_TIMEOUT)
return 0;
else
return 1;
}
等待信号量(有时间控制)
int CIOS_semaphore_Twait(CIOS_semaphore_t semaphoreID, unsigned int ms)
{
int error_code;
error_code = MsgWaitForMultipleObjects(1,&semaphoreID, FALSE, ms, QS_ALLEVENTS );
if(error_code == WAIT_TIMEOUT)
return 0;
else
return 1;
}
我一共有6个进程,进程与进程之间是用缓冲进行通信,我现在用一个进程往一个进程发数据,为什么有的时候收到,有的时候没收到,是不是我写的东西有问题?
解决方案 »
- Cformview
- 一个VC开发activex代码能不能简单的改变名字和id成为另一个控件的问题
- 求ado中Access数据库排序
- VC 的comsuppw.lib问题
- 您真的想当程序员吗?我想你属实不适合程序员这一行业?(摘自网易社区)
- 哪个函数可以转换一个url,怎样用?
- 如果有人能帮我编程实现以下功能,并提供代码,只要我认为可以了,我就给她100分!!!
- 各位大侠:VC中有没有类似VB中的函数“sendkeys”发送键盘消息?若有,怎么用?
- 谁有VS.net简体中文正式版里的MSDN下载地址
- 网络唤醒的资料(from MSDN)
- sprintf如何将数字输出成8位字符不足用0补齐
- 问一下主进程和线程之间的问题
我知道,我就是让大家帮我看一下,如果我用上面的方法去做,会不会有问题