Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading Indy 10 TcpServer创建新线程_Multithreading_Connection_Indy10_Tcpserver - Fatal编程技术网

Multithreading Indy 10 TcpServer创建新线程

Multithreading Indy 10 TcpServer创建新线程,multithreading,connection,indy10,tcpserver,Multithreading,Connection,Indy10,Tcpserver,在上,Remy Lebeau提供了一个很好的示例,用于在TIdTCPServer.OnExecute过程中使用外部TIdContext。但这只适用于印第9号。Indy 10引入了一种新的线程机制。TIdContext不再直接连接到连接。现在如何创建一个新线程,例如断开连接或向客户端写入一些数据 在上,Remy Lebeau提供了一个很好的示例,用于在TIdTCPServer.OnExecute过程中使用外部TIdContext 这篇文章只是StackOverflow上这个问题的一面镜子: 但这

在上,Remy Lebeau提供了一个很好的示例,用于在TIdTCPServer.OnExecute过程中使用外部TIdContext。但这只适用于印第9号。Indy 10引入了一种新的线程机制。TIdContext不再直接连接到连接。现在如何创建一个新线程,例如断开连接或向客户端写入一些数据

在上,Remy Lebeau提供了一个很好的示例,用于在TIdTCPServer.OnExecute过程中使用外部TIdContext

这篇文章只是StackOverflow上这个问题的一面镜子:

但这只适用于印第9号

不是真的。这个例子是为印地10号写的

Indy 10引入了一种新的线程机制。TIdContext不再直接连接到连接

TIdContext
实际上是在Indy 10中引入的,用于将用户数据与线程分离。其思想是允许每客户端上下文在多个线程/光纤之间移动1。但是,
TIdContext
确实有一个
warn
属性,可以将该属性类型转换为
TIdYarnOfThread
,以访问当前运行
TIdContext
的底层
TIdThreadWithTask

1:但实际上,线程从来没有实现过这一点,光纤支持也不起作用,所以被放弃了

Indy 9和更早版本使用
TIdPeerThread
直接在线程中跟踪用户数据
TIdPeerThread
在Indy 10中不存在,它被替换为
TIdThreadWithTask
TIdContext
(源于
TIdTask

现在如何创建一个新线程,例如断开连接或向客户端写入一些数据

如果要在Indy 10中为
TIdTCPServer
创建自定义线程类,而不是(或者可能是附加)自定义上下文类,则可以执行以下操作:

  • 根据需要从
    TIdThreadWithTask
    override
    virtual
    方法派生自定义类

  • TIdSchedulerOfThread…
    组件(
    TIdSchedulerOfThreadDefault
    TIdSchedulerOfThreadPool
    )显式分配给
    TIdTCPServer.Scheduler
    属性。如果不执行此操作,
    TIdTCPServer
    将为其自身创建一个内部
    TIdSchedulerOfThreadDefault
    ,您将没有机会告诉它要使用哪种类型的线程类

  • 将线程类类型分配给调度程序的
    ThreadClass
    属性

这相当于从Indy 9中的
TIdPeerThread
和设置
TIdTCPServer.ThreadClass
派生