Windows 如何:通知应用程序数据库表行已更新?

Windows 如何:通知应用程序数据库表行已更新?,windows,multithreading,postgresql,mfc,triggers,Windows,Multithreading,Postgresql,Mfc,Triggers,我正在使用PostgreSQL开发一个基于MFC的Windows应用程序,它将执行 从UI获取信息 执行一些逻辑并将相关信息存储到数据库 必须立即或按计划间隔发送存储的信息,例如在xyz日期的5:00通过网络发送 目前,我们已经开发了一个dispacher机制线程,它不断轮询数据库以获取插入数据库中的新信息。线程获取信息并发送到网络模块 但是,我觉得这不是正确的方法 每次轮询都是一项开销。有时可能没有什么可执行的 这不是实时的,因为我们每5秒投票一次 所以 是否有一种方法可以在数据库中的信息更新

我正在使用PostgreSQL开发一个基于MFC的Windows应用程序,它将执行

从UI获取信息 执行一些逻辑并将相关信息存储到数据库 必须立即或按计划间隔发送存储的信息,例如在xyz日期的5:00通过网络发送 目前,我们已经开发了一个dispacher机制线程,它不断轮询数据库以获取插入数据库中的新信息。线程获取信息并发送到网络模块

但是,我觉得这不是正确的方法

每次轮询都是一项开销。有时可能没有什么可执行的 这不是实时的,因为我们每5秒投票一次 所以

是否有一种方法可以在数据库中的信息更新后立即向我的网络模块发送触发器

或者有什么更好的方法来完成这项任务


提前感谢。

是的,你是对的@RDX,你不应该每次都轮询它,而是可以在Postgres中编写一个触发器,然后从该触发器调用一个java程序,可以在下面的线程中看到


是的,你是对的@RDX,你不应该每次都轮询它,而应该在Postgres中编写一个触发器,然后从该触发器尝试调用一个java程序,可以在下面的线程中看到


您可以为此使用PostgreSQL的侦听/通知功能

对消息感兴趣的客户机将执行一个listen语句,然后触发器将通知他们

我不使用C语言,但根据您的经验,您可以以异步方式检索消息,这仍然涉及一些轻量级轮询,因为通知消息仅作为服务器应答的一部分发送。该手册声称运行空语句,例如;就够了。使用Java/JDBC,我使用了一个简单的select 42,它不会给服务器带来很大的工作负载,因为不涉及任何表


与实际检索表数据相比,此轮询速度更快,可扩展性更强。

您可以使用PostgreSQL的侦听/通知功能进行此操作

对消息感兴趣的客户机将执行一个listen语句,然后触发器将通知他们

我不使用C语言,但根据您的经验,您可以以异步方式检索消息,这仍然涉及一些轻量级轮询,因为通知消息仅作为服务器应答的一部分发送。该手册声称运行空语句,例如;就够了。使用Java/JDBC,我使用了一个简单的select 42,它不会给服务器带来很大的工作负载,因为不涉及任何表


这种轮询显然比实际检索表的数据更快、更具可扩展性。

我放了一个java程序,因为我懂java。同样地,如果你的应用程序在windows上,肯定会有一个调用C程序的过程。而且我还想知道还有一个这样做的过程来生成对IPC的通知,即进程间通信,表示某些行被修改了。。。来源:可以从基于MFC的应用程序调用它吗?该应用程序是基于windows MFC对话框的应用程序,当然它使用MVC模式。如何调用?我放了一个java程序,因为我懂java。同样地,如果你的应用程序在windows上,肯定会有一个调用C程序的过程。而且我还想知道还有一个这样做的过程来生成对IPC的通知,即进程间通信,表示某些行被修改了。。。来源:可以从基于MFC的应用程序调用它吗?该应用程序是基于windows MFC对话框的应用程序,当然它使用MVC模式。如何调用?你能分享一些信息吗