首页| 论坛| 消息

标题:多个对象向同一个文件追加内容
作者:介农酥
日期:2019-09-05 16:30
内容:

几个对象向同一个文件追加内容,记录日志。之间我将文件和流都定义成静态的,但是static的变量或者方法总是引起程序运行一段时间崩溃,我没办法就全改成普通的了,但这样,不同的对象写入的内容不是追加,而是直接覆盖之前对象写的。
想问下有什么方法,还有,这个static为什么会引起程序崩溃啊,我实在不明白,关于崩溃这个相关的问题,我之前还这上面写过提问:
http://www.qtcn.org/bbs/read-htm-tid-86080.html


#1 [沉默小ai 09-05 16:43]
加一把锁呗,这样不会造成资源竞争
#2 [XChinux 09-05 16:51]
你多个对象在不同线程中吗?同一个线程没问题吧。
另一种方法,就是你不同对象通过发送信号给某一个写对象来执行。信号连接时注意参数,好支持跨线程,以保证写对象按顺序写入。
#3 [firebolt 09-05 22:29]
如果单纯写日志,推荐一个轻量级日志库给你用吧,别自己折腾了,看了一些你的问题贴,感觉你对多线程编程缺乏经验,先找本书看看吧。
https://github.com/google/glog.git
#4 回 XChinux 的帖子 [介农酥 09-06 09:04]
XChinux:你多个对象在不同线程中吗?同一个线程没问题吧。
另一种方法,就是你不同对象通过发送信号给某一个写对象来执行。信号连接时注意参数,好支持跨线程,以保证写对象按顺序写入。 (2019-09-05 16:51) 
对,不同线程。你后面的方法好哇,把所有要写日志的对象通过信号把内容发日志对象来写,这样既不用static,也不会混了,谢谢!但你后面“信号连接时注意参数,好支持跨线程,以保证写对象按顺序写入”,不太明白。
其实是这样的,我的一个线程里有好几个对象是按顺序写入,按调用关系有前后,这几个按你说的,应该是可以顺序写入的,同时4个线程里又有这个对象,估计是线程里的乱了。
这个static我现在都不敢用了,线程用多了也崩,说多了,多少泪。目前还是不知不解。
#5 回 沉默小ai 的帖子 [介农酥 09-06 09:06]
沉默小ai:加一把锁呗,这样不会造成资源竞争  (2019-09-05 16:43) 
我不敢加锁了,之前有个问题加锁了,运行一段时间,不解锁了。

<< 1 2 3 >> (1/3)

回复 发表
主题 版块