读书人

关于双线程访问共享FIFO的有关问题有

发布时间: 2012-03-02 14:40:29 作者: rapoo

关于双线程访问共享FIFO的问题,问题很多求大虾帮忙看下
本人刚学,有点菜 如不能解决 给点建议也成 分及时给
#include <windows.h>
#include <stdio.h>
#include <conio.h>
CRITICAL_SECTION g_s;
#define TRUE 1
#define FALSE 0
#define m 50
BOOL InitializeCriticalSectionAndSpinCount(
PCRITICAL_SECTION pcs, DWORD dwSpinCount);

void EnterCriticalSection(PCRITICAL_SECTION pcs);
////////////////////////////////////////////////////////////////////////////
typedef struct
{
QEle_Type elem[m];
int front;
int rear;
}SeqQueue;
void InitQueue(SeqQueue *q)
{
q->front =0;
q ->rear =0;
}
//////////////////////////////////////////////////////////////////////////////
int EnQueue (SeqQueue *q,int x)
{
if(q->rear==m)
{
printf("队列已满");
return(FALSE);
}
else
{
q->elem[q->rear]=x;
q->rear++;
return (TURE);
}
}
///////////////////////////////////////////////////////////////////////////////
int DeQueue (SeqQueue *q,int x)
{
if(q->rear == q->front)
{
printf("队空");
return(FALSE);
}
else
{
x=q->elem[q->front];
q->front++;
return x;
}
}

void LeaveCriticalSection(PCRITICAL_SECTION pcs);
////////////////////////////////////////////////////////////////////////////////
void main()
{
void InitializeCriticalSection(PCARITACAL_SECTION pcs);

DWORD WINAPI FirstThread(PVOID pvParam)
{
while ()
{
EnterCriticalSection(&g_s);
SeqQueue *Q;
int x;
InitQueue(Q);
printf("输入:\n");
scanf("%d",&x);
while(x!=0)
{
EnQueue(Q,x)
scanf("%d",&x);
}

LeaveCriticalSection(&g_s);
}
return (0);
}
DWORD WINAPI SecondThread(PVOID pvParam)
{
while ()
{
EnterCriticalSection (&g_s);
SeqQueue *Q;
int x;
InitQueue(Q);
printf("输出:\n");
while(x=DeQueue(Q,x))
{
printf("%2d",x);
}
printf("\n");

LeaveCriticalSection (&g_s);
}
return(0);
}

}

[解决办法]
你这个根本都不是多线程吧??


多线程,起码要多啊。。
WINDOWS, CreatThread
[解决办法]
貌似只有一个主线程吧,还没有创建其他的线程呢...
[解决办法]
你的子线程创建在那里?
[解决办法]
没有CreateThread等等……
[解决办法]
lz想干嘛

读书人网 >C++

热点推荐