社区
C++ Builder
帖子详情
多线程使用
olivertree
2003-02-04 01:42:11
首先,我祝大家新年快乐!身体健康!
是这样的,在做一些消耗较大的程序时,比如说大量数据导入阿什么的,总是很占用系统资源,运行一下大约都是90%左右,而且在运行时,打开别的窗口,数据导入的窗口就很难打开、界面上的静态控件也显示不出来。所以我想用多线程实现,比如一个用来显示界面;一个用来响应用户突然的中断,另一个才是执行导入的。可是由于我对于多线程并不熟悉,还请大家赐教!
在这里先谢谢大家了!
...全文
73
6
打赏
收藏
多线程使用
首先,我祝大家新年快乐!身体健康! 是这样的,在做一些消耗较大的程序时,比如说大量数据导入阿什么的,总是很占用系统资源,运行一下大约都是90%左右,而且在运行时,打开别的窗口,数据导入的窗口就很难打开、界面上的静态控件也显示不出来。所以我想用多线程实现,比如一个用来显示界面;一个用来响应用户突然的中断,另一个才是执行导入的。可是由于我对于多线程并不熟悉,还请大家赐教! 在这里先谢谢大家了!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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();
POSIX
多线程
程序设计.pdf
内容简介 《POSIX
多线程
程序设计》深入描述了IEEE的开放系统接口标准——POSIX线程,通常称为Pthreads标准。本书首先解释了线程的基本概念,包括异步编程、线程的生命周期和同步机制;然后讨论了一些高级话题,包括属性对象、线程私有数据和实时调度。此外,本书还讨论了调度的问题,并给出了避免错误和提高性能等问题的有价值的建议。本书
使用
了大量注释过后 实例来解释实际的概念,并包括Pthreads的简单索引和对标准化的展望。 《POSIX
多线程
程序设计》适合有经验的C语言程序员阅读,也适合
多线程
人员参考。
WPF
多线程
演示
WPF
多线程
演示
libevent
多线程
libevent
多线程
, 参考mariotcp 参考http://blog.csdn.net/i_am_jojo/article/details/7587838流程图
Android
多线程
文件夹下载及断点续传
Android实现网络
多线程
下载,断点续传,压缩包内有两个项目: downloadDemo:
多线程
下载 MulThreadDownloader:断点续传(网上别人的项目)
wpf下
多线程
的例子
wpf下
多线程
的例子
C++ Builder
13,871
社区成员
102,693
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章