zoukankan      html  css  js  c++  java
  • setbuffer和freopen做一个简单的日志组件

          目标场景是这样的:

          多线程的应用程序要频繁打一些小字节的日志,也不想引用很重的日志库。

        

          设想了一个极其简单的日志组件,main线程中重定向stdout到文件,同时setbuffer设置一个10k的缓冲区,工作线程直接向stdout输出日志。

           很简单,但是有些担心,多线程写同一个文件会不会出现交叉写入的问题,linux的c是否保证文件缓冲区的数据安全,测试10000个线程全力写数据3s

    -rw-rw-r-- 1 smi smi 4601412816 07-07 11:25 0707.txt
           grep -v匹配日志文本,发现是ok的,没有出现交叉写入的问题。那要么是linux下的printf已经保证了线程安全,要么就是出事的概率极低,总而言之,追求性能而不要求百分百日志准确性的系统可以尝试采用。


  • 相关阅读:
    扩展正则表达式 练习题
    Linux特殊符号
    文件属性下
    文件属性和ls -lhi
    复习之前的和补充一些内容
    第二关练习题总结完结
    云服务器防ssh攻击
    实验四+085
    实验3+085
    第5次作业+085
  • 原文地址:https://www.cnblogs.com/learn-my-life/p/4626527.html
Copyright © 2011-2022 走看看