假设机器数量为4,情况如下:
1、在4台机器上各执行一个同样的c++程序P,任意两个程序间可通信
2、每个程序P都有自己的一套ini配置文件
3、程序P启动时会加载ini文件的配置到内存中,执行过程中会修改内存中的配置并更新ini文件
4、要对所有程序都做同样的修改,必须手动对每一个程序进行修改操作才行问题是:
1、如何能实现:只修改一个程序的内存中的配置,则能让所有的程序都成功地同步修改各自内存和ini文件?即保证所有程序的内存和ini配置都是一致的?
1、在4台机器上各执行一个同样的c++程序P,任意两个程序间可通信
2、每个程序P都有自己的一套ini配置文件
3、程序P启动时会加载ini文件的配置到内存中,执行过程中会修改内存中的配置并更新ini文件
4、要对所有程序都做同样的修改,必须手动对每一个程序进行修改操作才行问题是:
1、如何能实现:只修改一个程序的内存中的配置,则能让所有的程序都成功地同步修改各自内存和ini文件?即保证所有程序的内存和ini配置都是一致的?
解决方案 »
- 同一组的多个radiobutton的click操作共用同一个Click事件,可以吗,一个一个设代码太麻烦
- DLL 急求!实在是搞不懂?
- 请问如何才能获取网页里applet中的数据?
- 【求助】关于界面的问题?【求助】
- 怎样定义接口,使com组件能够返回一个二进制的流(比如图片数据)
- MSDN2004以后版本总是会在系统盘下产生200M左右的文件,有和方法将其转移指定到其他盘下去吗?
- 在vc中如何使用蜂鸣器
- 高分请教Parser Generator的问题
- {有分}如何用VC进行数据库管理系统的开发(高手或有这开发经验的请进)
- 如何制作透明背景字体?
- 调用ReadProcessMemory 0x0000012B
- richedit
SHChangeNotifyRegister和 SHChangeNotifyDeregister
即使检测到了,并将ini文件同步传到其它程序的对应路径,但其它程序不能通过重新加载ini的方式将新的配置读到内存当中,因为重新加载的时间太长了,根本不能接受
那你别用ini的操作API了,那个API是很慢,文件10k以上就慢了。
你可以自己写相关的操作,用内存映射文件读ini文件到内存,然后我们一直修改内存。
1、修改P0内存中的配置。
2、与P1~P3通讯,通知它们修改配置。
3、P1~P3收到通知后,修改自己内存中的配置,并存盘。
4、P0自己存盘。当然,前提是:1、没有人会去手工(用记事本之类)改你的ini文件;2、所有的程序都同时启动,或者至少你在改动P0的配置的时候,P1~P3都是启动的。
一直修改内存没有问题,但要求内存中的内容必须写到ini文件中,这样比如程序重启的时候才有的加载啊。
始终有一大要求就是所有程序的内存中的配置必须一致,即使在修改的过程中,不一致的时间也不能超过几分钟
1、P0从用户界面收集到配置信息的修改。
2、P0把原来的配置在内存中保留一份,然后在内存中修改配置,如果不成功,则恢复原来配置。
3、P0给P1~P3发消息,并等待对方回复。此过程中P0不响应任何其它消息或事件。
4、P1~P3收到消息后,修改配置,如果不成功则恢复原来配置,并回复P0“ERROR”,若成功则回复“OK”。
5、P1~P3等待P0最终通知。
6、P0收到P1~P3的所有回复后,如果其中有“ERROR”,则再给P1~P3发消息,通知它们取消修改,并且自己也取消修改。如果所有回复都是“OK”,则给P1~P3发消息,通知它们将修改保存,并且自己也保存修改。
7、P1~P3接到最终通知后,如果是取消,那么恢复原来配置,否则保存修改。当然,这个过程的前提是网络一直畅通。如果网络不通(比如发送最终通知的时候突然中断,或者你的某个程序突然崩溃),任你什么办法也无法保持配置一致。
至于网络不通,用session的方式能解决一部分问题,但要完全解决网络不通导致的不同步,确实不大可能哈
3q so much