社区
C++ Builder
帖子详情
怎样建立一个可触发式的线程
soloxiao
2005-08-20 09:05:10
建立的线程都在execute中运行,我想在这个线程中做接收socket数据,是否能在其中写event(不是createEvent),比如用TClientSocket中的OnRead,现在因为一到线程中来就被execute占用了cpu
我不会用线程,赐教了,谢谢!
...全文
128
3
打赏
收藏
怎样建立一个可触发式的线程
建立的线程都在execute中运行,我想在这个线程中做接收socket数据,是否能在其中写event(不是createEvent),比如用TClientSocket中的OnRead,现在因为一到线程中来就被execute占用了cpu 我不会用线程,赐教了,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
7rainbow
2005-08-21
打赏
举报
回复
//
上面写错了一点,没有这一句 ServerSmtpSub(Socket_Smtp);
7rainbow
2005-08-21
打赏
举报
回复
当然可以了。
你接收数据,可以用的啊,以前写过一些,希望对你帮助
当然可以了。
你接收数据,可以用的啊,以前写过一些,希望对你帮助
//.h
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <ScktComp.hpp>
#include <ExtCtrls.hpp>
class SmtpThread : public TThread
{
private:
protected:
void __fastcall Execute();
public:
TServerClientWinSocket *Socket_Smtp;
__fastcall SmtpThread(bool CreateSuspended);
};
class TForm1 : public TForm
{
__published: // IDE-managed Components
TServerSocket *ServerSocket_smtp;
TButton *Button1;
TButton *Button2;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
.cpp
//--------------------------------------------------
//--------------------------------------------------
__fastcall SmtpThread::SmtpThread(bool CreateSuspended)
: TThread(CreateSuspended)
{
}
//--------------------------------------------------
void __fastcall SmtpThread::Execute()
{
ServerSmtpSub(Socket_Smtp);
AnsiString str_buftmp;
if (!Socket->Connected)
{
return ;
}
str_buftmp=Socket->ReceiveText();//接收
if (Socket->Connected)
Socket->Close();
}
//--------------------------------------------------
// 要先在属性中设定端口,(25),在Accept事件中写如下
void __fastcall TForm1::ServerSocket_smtpAccept(TObject *Sender,
TCustomWinSocket *Socket)
{
try
{
SmtpThread *newthread=new SmtpThread(true);
newthread->Socket_Smtp=(TServerClientWinSocket *) Socket;
newthread->Resume();
}
catch(...)
{
}
}
//--------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
try{
ServerSocket_smtp->Active=true;
ShowMessage("端口打开成功");
}
catch(...)
{
ShowMessage("25端口打开失败");
}
}
//--------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
ServerSocket_smtp->Active=false;
}
northsoft_
2005-08-21
打赏
举报
回复
工作线程不负责处理windows消息的,因此不能用TClientSocket的OnRead
java多
线程
聊天程序
java多
线程
聊天程序 GUI界面 socket实现,
QThread多
线程
简单
触发式
消息响应服务
使用的场景: 例如 大型超市的收银-多个收银柜台应对客户的买单需求 每个收银柜台相当于
一个
线程
收银柜台提供收银的服务,每次服务都是对客户买单事件的响应 反向设计来看: // 收银服务: 提供对客户收银等服务 class BillService { event(QEvent e); }; // 收银柜台:提供独立的收银
线程
环境,并一直等待客户 class BillThre
C/C++开发,c++代码如何实现在win/linux下跨
线程
间事务触发实现(含示例代码)
c++代码如何实现在win/linux下跨
线程
间事务触发实现(含完整示例代码),创建
一个
event_handle,将其传递给
线程
对象,并进行事件等待命令,在主
线程
进行命令输入来触发事件信号,
线程
对象获得事件返回来执行后续操作。
多
线程
编程全攻略:提升性能与
线程
安全的必备知识
介绍多
线程
编程的相关概念、同步机制以及无锁编程。从
线程
的基础概念出发,包括逻辑
线程
和硬件
线程
的比较,以及
线程
、核心和函数的关系。随后,我们探讨了多
线程
编程的基本原则,包括时间分片、上下文切换、
线程
安全函数和可重入函数等。接着,我们讨论了为什么需要多
线程
同步、什么情况需要进行同步以及多
线程
同步的方式,包括串行化、原子操作和锁等。我们还深入研究了非阻塞的无锁同步机制,如CAS循环和无锁数据结构。最后,我们解释了程序序、内存序、乱序执行、存储缓冲区和失效队列等概念,以帮助更好地理解多
线程
编程。
Javascript的单
线程
与多
线程
目录 一、浏览器的
线程
和进程 1.浏览器的
线程
2.浏览器是多进程的 二、Javascript是单
线程
的 1.异步Ajax也是单
线程
的 2.setInterval和setTimeout本质上并不是多
线程
三、Web Worker支持多
线程
1.多
线程
间数据交互 2.Web Worker的兼容性 3.Web Worker的使用限制 3.1同源限制 3.2访问限制 总结 一、浏览器的
线程
和进程 1.浏览器的
线程
一个
浏览器通常由以下几个
线程
: 渲染引擎
线程
...
C++ Builder
13,874
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章