社区
C++ Builder
帖子详情
多线程使用
olivertree
2003-02-04 01:42:11
首先,我祝大家新年快乐!身体健康!
是这样的,在做一些消耗较大的程序时,比如说大量数据导入阿什么的,总是很占用系统资源,运行一下大约都是90%左右,而且在运行时,打开别的窗口,数据导入的窗口就很难打开、界面上的静态控件也显示不出来。所以我想用多线程实现,比如一个用来显示界面;一个用来响应用户突然的中断,另一个才是执行导入的。可是由于我对于多线程并不熟悉,还请大家赐教!
在这里先谢谢大家了!
...全文
112
6
打赏
收藏
多线程使用
首先,我祝大家新年快乐!身体健康! 是这样的,在做一些消耗较大的程序时,比如说大量数据导入阿什么的,总是很占用系统资源,运行一下大约都是90%左右,而且在运行时,打开别的窗口,数据导入的窗口就很难打开、界面上的静态控件也显示不出来。所以我想用多线程实现,比如一个用来显示界面;一个用来响应用户突然的中断,另一个才是执行导入的。可是由于我对于多线程并不熟悉,还请大家赐教! 在这里先谢谢大家了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qiuafa
2003-05-03
打赏
举报
回复
接分
litvalley
2003-04-25
打赏
举报
回复
UP
watercelery
2003-02-28
打赏
举报
回复
你只要再开1个线程就可以了,你的默认程序会自动开一个,优先级是tpNormal,你只要再开一个优先级比这个低的线程做大数据量的计算,应用程序可以控制这个线程的挂起和唤醒。
这东西不好说,我给你个线程的例子看看吧。
一共有3个一样的CheckBox,每个对应一个Edit控件,该控件中是数字,表示线程的优先级.
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
int x,y;
if(CheckBox1->Checked)
{
x=160;
y=CheckBox1->Top+CheckBox1->Height/2;
//Edit1->Text="2";
if(Ball1==NULL) Ball1=new TSquareThread(clRed,x,y);
Ball1->Resume();
}
else
Ball1->Suspend();
}
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
if(Ball1!=NULL)
{
int nPri=StrToInt(Edit1->Text);
switch(nPri)
{
case 2: Ball1->Priority=tpLowest; break;
case 3: Ball1->Priority=tpLower; break;
case 4: Ball1->Priority=tpNormal; break;
case 5: Ball1->Priority=tpHigher; break;
case 6: Ball1->Priority=tpHighest; break;
default: Ball1->Priority=tpNormal;
}
}
}
线程:
void __fastcall TSquareThread::Execute()
{
Step=1;
do
{
x1=x2;
x2=x2+Step;
if(x2<160) Step=1;
else if(x2>(Form1->ClientWidth-15))
Step=-1;
Synchronize(Paint);
}while(!Terminated);
//---- Place thread code here ----
}
//---------------------------------------------------------------------------
__fastcall TSquareThread::TSquareThread(TColor Col,int XPos,int YPos,bool CreateSuspended):TThread(CreateSuspended)
{
EColor=Col;
x2=XPos;
x1=x2;
y=YPos;
}
void __fastcall TSquareThread::Paint()
{
Form1->Canvas->Pen->Color=Form1->Color;
Form1->Canvas->Brush->Color=Form1->Color;
Form1->Canvas->Rectangle(x1-5,y-5,x1+5,y+5);
Form1->Canvas->Pen->Color=EColor;
Form1->Canvas->Brush->Color=EColor;
Form1->Canvas->Rectangle(x2-5,y-5,x2+5,y+5);
}
class TSquareThread ;
class TSquareThread : public TThread
{
private:
TColor EColor;
int x1,x2,y;
long Step;
protected:
void __fastcall Execute();
void __fastcall Paint();
public:
//__fastcall TSquareThread(bool CreateSuspended);
__fastcall TSquareThread::TSquareThread(TColor Col,int XPos,int YPos,bool CreateSuspended);
};
class TForm1 : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TCheckBox *CheckBox1;
TCheckBox *CheckBox2;
TCheckBox *CheckBox3;
TEdit *Edit1;
TEdit *Edit2;
TEdit *Edit3;
void __fastcall CheckBox1Click(TObject *Sender);
void __fastcall Edit1Change(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
void __fastcall CheckBox2Click(TObject *Sender);
void __fastcall Edit2Change(TObject *Sender);
private: // User declarations
TSquareThread *Ball1,*Ball2,*Ball3;
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Robin
2003-02-22
打赏
举报
回复
呵呵!关注ing !
halibut
2003-02-22
打赏
举报
回复
up!
lanren_me
2003-02-22
打赏
举报
回复
Synchronize();
Qt常用的
多线程
使用
方式
本文介绍了Qt5常用的
多线程
使用
方式,包括派生于QThread重写run()函数、用moveToThread()移动对象到新线程、借助QThreadPool线程池和QtConcurrent模块实现
多线程
。还阐述了不同方式的注意事项,如
多线程
操作UI、定时器
使用
、信号槽绑定等,以及
多线程
id获取和优先级设置等拓展内容。
QT
多线程
的
使用
本文介绍了QT
多线程
的
使用
,阐述了其主要作用,如提高性能和响应速度、实现多任务处理等。详细讲解了两种
多线程
方式,包括创建子类继承QThread和创建QObject派生类。还进行了效果和代码演示,最后总结了两种方法中函数运行所在线程的区别。
C#中的各种
多线程
使用
场景的demo,便于快速对号入座
使用
该博客提供了C#中各种
多线程
使用
场景的demo,方便开发者快速对号入座
使用
,聚焦于C#开发语言在
多线程
方面的应用。
python中
多线程
的
使用
Python 中
使用
多线程
可让程序并发执行多个任务,提高 I/O 密集型任务效率。标准库提供模块支持
多线程
编程,介绍了创建和启动线程、等待线程完成、处理共享数据线程安全、控制线程同步、
使用
线程池等方法,还提及 GIL 对
多线程
性能的影响及调试注意事项。
Java
多线程
使用
详解
本文详细介绍 Java
多线程
的
使用
,涵盖线程创建的多种方式,如继承 Thread 类、实现 Runnable 接口等;阐述线程生命周期和状态,介绍线程同步机制、线程池
使用
。还列举常见及实际应用场景,最后给出
多线程
编程的注意事项,助于在项目中合理应用
多线程
技术。
C++ Builder
13,871
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章