IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c++ builder 6 两个线程分别读写 ini文件 -> 正文阅读

[C++知识库]c++ builder 6 两个线程分别读写 ini文件

//

//本文在c++ builder 6.0平台调试通过
#include <vcl.h>
#include <fstream>
#include <syncobjs.hpp>// TCriticalSection 需要这个头文件
#include <inifiles.hpp>
#include <MyThread1.h>
#include <MyThread2.h>
#include <iostream> ? ? ? // std::cout
using namespace std;
volatile int Counter(0); // 定义一个全局变量,当做计数器用于累加

int _tmain(int argc, _TCHAR* argv[])
{


? ? TCriticalSection ?* Mtx=new TCriticalSection() ;
? ? const int num=1;
? ? MyThread1 * myThreadArray[num];
? ? for (int i=0;i<num;i++)
? ? {
? ? ? ? myThreadArray[i]=new MyThread1(&Counter,Mtx,false); //写线程
? ? ? ?// myThreadArray[i]->Resume();//恢复线程
? ? }

? ? MyThread2 * myThread2=new MyThread2(&Counter,Mtx,false);//读线程
? ? for (int i=0;i<num;i++)
? ? {
? ? ? myThreadArray[i]->WaitFor();
? ? }

? ? //myThread1->WaitFor();
? ? myThread2->WaitFor();
? ? for (int i=0;i<num;i++)
? ? {
? ? ? ? delete myThreadArray[i];
? ? }
? ? //delete myThread1;
? ? delete myThread2;
? ? delete Mtx;

? ? system("pause");
? ? return 0;

}

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "Unit1.cpp"
#include "MyThread1.h"
#include <iostream> ? ? ? // std::cout
#include <syncobjs.hpp>// TCriticalSection 需要这个头文件
#include <fstream>
#include <inifiles.hpp>
#pragma package(smart_init)
//---------------------------------------------------------------------------
? using namespace std;
__fastcall MyThread1::MyThread1(volatile int * pCounter,TCriticalSection ?* Mtx,bool CreateSuspended)
? ? ? ? : pcounter(pCounter),mtx(Mtx),TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall MyThread1::Execute()
{
? ? ? // while(!Terminated)
? ? ? ?{
? ? ? ? writeCoordinate();
? ? ? ? }
}
//---------------------------------------------------------------------------
void __fastcall MyThread1:: writeCoordinate()
{ ? //while ((*pcounter)<10)//退出循环条件,counter=10 ,根据情况改条件
? ?// {
? ? mtx->Acquire(); ? //互斥锁上锁
? ? TIniFile *pIni = new TIniFile("d:\\test2.ini");//
? ? pIni->WriteString("坐标","x","1");
? ? pIni->WriteString("坐标","y","1");
? ? pIni->WriteString("坐标","z","1");
? ? TDateTime dt=Now();
? ? unsigned short year,month,day;
? ? unsigned short hour,min,sec,msec;
? ? dt.DecodeDate(&year,&month,&day);
? ? dt.DecodeTime(&hour, &min,&sec, &msec);
? ? char ?time[50];
? ? sprintf(time,"%d.%d.%d %d:%d:%d %d",year,month,day,hour,min,sec,msec);
? ? pIni->WriteString("坐标","time",time);
? ?// (*pcounter)=(*pcounter)+1;
? ?++(*pcounter);
? ? delete pIni;
? ? mtx->Release(); ?//互斥锁解锁
? ? //Sleep(1);
? ?// }

//---------------------------------------------------------------------------
#include <vcl.h>
#ifndef MyThread1H
#define MyThread1H
#include <syncobjs.hpp>// TCriticalSection 需要这个头文件
//---------------------------------------------------------------------------
#include <Classes.hpp>
//---------------------------------------------------------------------------
class MyThread1 : public TThread
{ ? ? ? ? ? ?
private:
? ? ?TCriticalSection ?* mtx;
? ? ?volatile int * pcounter;
protected:
? ? ? ? void __fastcall Execute();
? ? ? ? void __fastcall ?writeCoordinate();
public:
? ? ? ? __fastcall MyThread1(volatile int * pCounter,TCriticalSection ?* Mtx,bool CreateSuspended);
};
//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "MyThread2.h"
#include <iostream> ? ? ? // std::cout
#include <syncobjs.hpp>// TCriticalSection 需要这个头文件
#include <fstream>
#include <inifiles.hpp>
#pragma package(smart_init)
//---------------------------------------------------------------------------
? using namespace std;
? volatile int counter(0); // 定义一个全局变量,当做计数器用于累加
__fastcall MyThread2::MyThread2( volatile int * pCounter,TCriticalSection ?* Mtx,bool CreateSuspended)
? ? ? ? ?: pcounter(pCounter),mtx(Mtx),TThread(CreateSuspended),temp(0)
{
? ? //
}
//---------------------------------------------------------------------------
void __fastcall MyThread2::Execute()
{
? ? ? ? //---- Place thread code here ----
? ? ? ?// while (!Terminated)
? ? ? ? {
? ? ? ? ? ?readCoordinate();

? ? ? ? }
}
//---------------------------------------------------------------------------
void __fastcall MyThread2::readCoordinate()
{
? ?// while ((*pcounter)<3) //退出循环条件,counter=10,根据情况改条件
? ? {
? ? ? mtx->Acquire(); ? //互斥锁上锁
? ? ? TIniFile *pIni = new TIniFile("d:\\test2.ini");//
? ? ? char x[50]={0};char y[50]={0};char z[50]={0};char time[50]={0};
? ? ?// AnsiString x,y,z,time;
? ? ? sprintf(x,"%s",pIni->ReadString("坐标","x","未知"));
? ? ? sprintf(y,"%s",pIni->ReadString("坐标","y","未知"));
? ? ? sprintf(z,"%s",pIni->ReadString("坐标","z","未知"));
? ? ? sprintf(time,"%s",pIni->ReadString("坐标","time","未知"));
? ? ?// if(*pcounter>temp)
? ? ?// {
? ? ? ? ? cout<<*pcounter<<endl;
? ? ? ? ? printf(x);printf("\n") ;
? ? ? ? ? printf(y);printf("\n") ;
? ? ? ? ? printf(z);printf("\n") ;
? ? ? ? ? printf(time);printf("\n");
? ? ? ? ? cout<<"---"<<endl;
? ? ? ? ? temp = *pcounter;
? ? // }

? ? ? delete pIni;
? ? ? ?mtx->Release(); ?//互斥锁解锁
? ? ?// ?Sleep(2);
? ? }

}

//---------------------------------------------------------------------------

#ifndef MyThread2H
#define MyThread2H
//---------------------------------------------------------------------------
#include <syncobjs.hpp>// TCriticalSection 需要这个头文件
#include <MyThread1.h>
#include <Classes.hpp>
//---------------------------------------------------------------------------
class MyThread2 : public TThread
{ ? ? ? ? ? ?
private:
? ? ? TCriticalSection ?* mtx;
? ? ? ?volatile int * pcounter;
? ? ? ?int temp;
protected:
? ? ? ? void __fastcall Execute();
? ? ? ? ?void __fastcall MyThread2::readCoordinate();
public:
? ? ? ? __fastcall MyThread2( volatile int * pCounter,TCriticalSection ?* Mtx,bool CreateSuspended);
};
//---------------------------------------------------------------------------

#endif

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-22 20:23:18  更:2022-02-22 20:25:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:48:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码