|
|
1
5
你可以做得更简单,因为你只是想知道一个应用是否从另一个应用运行。只要它们在同一台机器上由同一个用户运行,就可以让X简单地使用
您也可以使用Y的窗口标题(标题),只要您确定它是不同的:
|
|
|
2
11
请看一下我的工控机: http://www.cromis.net/blog/downloads/cromis-ipc/ 它速度快、免费并且有一个可设置的超时,所以您可以将其设置为非常小的量(例如50毫秒)。因为它非常快(典型的消息周期请求-处理-响应时间不到1毫秒,大约0.1毫秒),所以您可以有非常小的超时。它内置了客户机-服务器,所以许多客户机都没有问题。它以线程的方式运行,后面有任务池,这样它就不会冻结您的程序,并且它有非常灵活的数据包,以便于写入/读取数据。 如前所述,如果调试器正在运行,您甚至可以使用其他方法进行检查。
|
|
3
6
你可以让x把它的输出写到 memory-mapped file -如果正在运行,Y可以检索数据。这样x不关心y是否向上。 X可以在已知位置写入某种控制信息(例如,在映射文件中存储最近1000个从偏移量0开始写入的XML的偏移量),并将文件的其余部分用作原始数据的循环缓冲区。 如果需要y作为x中动作的决定因素,请让y创建映射文件,然后使用其存在/不存在作为“通道”x侧数据生成的检查。有创建者和第二个用户的示例代码 here . |
|
|
4
4
命名管道很快,因为它们是基于内存映射文件来实现的。如果服务器出现故障,超时可能会变慢… 如果您需要在同一台计算机上有快速响应,为什么不使用好的旧GDI消息? 您可以在纯控制台或后台服务应用程序(对于服务应用程序,安全设置必须指定此服务必须与桌面交互,即必须能够接收和发送消息)中使用这些消息,即使没有用户界面或视觉形式。 诀窍是处理wm_CopyData消息。 例如,请参见tsqlrestclienturimessage类和tsqlrestserver的exportservermessage/answertomessage方法,如中所实现的 http://synopse.info/fossil/finfo?name=SQLite3/SQLite3Commons.pas 在实践中,我发现对于少量数据(每个消息高达64KB或类似的大小),GDI消息比命名管道快得多。 你还有其他选择 Looking for an alternative to windows messages used in inter-process communication |
|
|
5
2
根据不同的客户机/服务器调查,这里有一些关于速度的真实数据。 所有基准测试都在一台计算机上本地运行。您可以在直接访问上每秒实现超过15000个查询,在HTTP/1.1远程访问上每秒实现4300个查询。这是一个使用Centrino2 CPU的笔记本电脑的基准测试,防病毒软件处于开启状态。
这个基准测试客户机和服务器的速度,并且不是多线程的(即使我们的框架是多线程安全的)。 因此,您可以猜测,对于每个请求的4kb JSON内容数据块:
|
|
6
1
|
|
|
7
1
|
|
|
8
0
|
|
|
9
0
|