请问c++,生产者与消费者的有关问题

请教c++,生产者与消费者的问题
#include <iostream> 
#include <stdlib.h> 
#include <STDIO.H> 
#include <windows.h> 

using namespace std; 

typedef int semaphore;                          /* 信号量是一种特殊的整型变量 */     
const int SIZE_OF_BUFFER = 5 ;                                //缓冲区长度 
const unsigned short PRODUCERS_COUNT = 2;       //生产者的个数 
const unsigned short CONSUMERS_COUNT = 3;       //消费者的个数 

DWORD producers[PRODUCERS_COUNT] ; //生产者线程的标识符                       
DWORD consumers[CONSUMERS_COUNT] ;//消费者线程的标识符 

const unsigned short THREADS_COUNT = PRODUCERS_COUNT+CONSUMERS_COUNT; //总的线程数 

/** 
*定义信号量 
*/ 
HANDLE mutex ;                               //互斥信号量  
HANDLE full ;                             //表示放有产品的缓冲区数,其初值为0  
HANDLE empty ;                            //表示可供使用的缓冲区数,其初值为N  

/** 
*定义共享缓冲区 
*/ 
semaphore buffer[SIZE_OF_BUFFER];  

/** 
*定义生产者和消费者使用的指针  
*/ 
int in = 0 ; 
int out = 0 ; 

int productNum = 0 ; 

DWORD WINAPI Producer(LPVOID) ; 
DWORD WINAPI Consumer(LPVOID) ; 

int main(int argc, char *argv[]) 

    //创建Mutex和Semaphore 
    mutex = CreateMutex(NULL,FALSE,NULL); 
    full = CreateSemaphore(NULL,0,SIZE_OF_BUFFER,NULL); 
    empty = CreateSemaphore(NULL,SIZE_OF_BUFFER,SIZE_OF_BUFFER,NULL); 
     
     
    HANDLE PVThreads[THREADS_COUNT];     //各线程的handle  
     
     //创建生产者线程 
     for (int i=0;i<PRODUCERS_COUNT;i++){ 
          PVThreads[i] = CreateThread(NULL,0,Producer,NULL,0,&producers[i]); 
          if (PVThreads[i] == NULL) break; 
     } 
     //创建消费者线程  
     for (int i=0;i<CONSUMERS_COUNT;i++){ 
           PVThreads[PRODUCERS_COUNT+i] 
                =CreateThread(NULL,0,Consumer,NULL,0,&consumers[i]); 
            if (PVThreads[i]==NULL) break; 
     } 
     
    bool isContinue = true ; 
    while(isContinue) 
    {  
          if(getchar()){  //按回车后终止程序运行 
               isContinue = false;  
           } 
    } 
    system("PAUSE");     
    return 0; 


void enBuffer(int pos) 

    cout<<"正在生产产品..."<<endl ; 
    Sleep(2000) ; 
    buffer[pos] = -1 ; 
    productNum++ ; 
    cout<<"生产完成!    已生产"<<productNum<<"个产品,并将新产品放在了缓冲区位置:"<<pos<<endl ; 


void deBuffer(int pos) 

    cout<<"正在消费产品..."<<endl ; 
    Sleep(1000) ; 
    buffer[pos] = -2 ; 
    productNum-- ; 
    cout<<"已消费在缓冲区位置:"<<pos<<"的产品,缓冲区剩余空间:"<<SIZE_OF_BUFFER-productNum<<endl ; 
    cout<<endl ;