c++ builder 多线程的创建

本文介绍了如何在C++ Builder中创建多线程,并使用循环队列进行数据处理。通过示例展示了如何使用TThread类创建线程,以及使用互斥量和信号量来实现线程间同步,确保数据安全。

1:创建线程类,继承tthread类,

class GeoSortThread : public TThread
{           
private:
        //--------------------------------------------------------------------
        Struct_VocGeoInfo *VGInfo;
        TGeoServer_GeoInfo *GeoInfo;

        //--------------------------------------------------------------------
        //ServerSocket控件
        TServerSocket *ServerSocket;
        //Xml控件
        //TXMLDocument *XMLDocument;
        //http控件
        //THTTPRIO *HTTPRIO;

        //--------------------------------------------------------------------
        //临界区
        //TCriticalSection  *Section;
        //信号量
        HANDLE hMutex;
        //循环队列(包括5项:缓存区,单元指针,生产索引,消费索引,缓存区数量)
        Struct_VocGeoInfo  pg_buff[SIZE_OF_BUFFER];
        //Struct_VocGeoInfo  *pg_buff;
        int in;
        int out;
        int count;

        int processCount;
        int ThreadIndex;
        //--------------------------------------------------------------------
        //临时OVInfo 包括SIZE_OF_TASK条VGInfo
        Struct_VocGeoInfo OVGInfo[SIZE_OF_TASK];
        int OVGInfoCount;

       
        void __fastcall Paint();
protected:
        void __fastcall Execute();
public:
        //--------------------------------------------------------------------
        //生产
        bool IsIdled;

        void __fastcall Put(Struct_VocGeoInfo *VGInfo,int ThreadIndex);
        void __fastcall Release();
        void __fastcall Acquire();
        __fastcall GeoSortThread(TServerSocket *ServerSocket1,int ThreadID,bool CreateSuspended);
};

 

这个线程中可以再调用别的类的成员和函数,但这个类要作为线程类的私有成员入上TGeoServer_GeoInfo *GeoInfo;

这样几个线程操作的类中的内存都是内存的拷贝

 

2:多线程中数据的处理

    比较好的方式是采用循环队列的方式来处理

using namespace std;

 

  const   unsigned   short   SIZE_OF_BUFFER   =   10;   //缓冲区长度  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值