即使使用thread 调用system()是阻塞的吗, 但是也没办法实现多线程发送报文?!

baidu_28726667 2021-03-29 11:36:53



使用多个thread 调用system() .命令是使用sendxml这个程序 发送test.xml。 sendxml这个程序就是最简单的tcp client发送东西。
测试发现并不能像别的并发软件那样测出服务器在高并发下存在业务逻辑bug。
...全文
107 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_28726667 2021-03-29
  • 打赏
  • 举报
回复

#include <iostream>
#include <thread>
#include <stdio.h>
#include <stdlib.h>

void test_send(int _nID)
{


    for(int ii =0; ii<30; ii++)
    {
        system("/home/demo/bin/sendxml test.xml");
    }

}


int main(void)
{

   std::thread t1(test_send,1);
   t1.detach();

   std::thread t2(test_send,2);
   t2.detach();

   std::thread t3(test_send,3);
   t3.detach();

   std::thread t4(test_send,4);
   t4.detach();

   std::thread t5(test_send,4);
   t5.detach();

   std::thread t6(test_send,4);
   t6.detach();

   std::thread t7(test_send,4);
   t7.detach();

   std::thread t8(test_send,4);
   t8.join();

    return 0;
}






代码如上, 执行的时候 ps -ef能看到多个进程在跑
baidu_28726667 2021-03-29
  • 打赏
  • 举报
回复
这是1个线程for循环30次吧。 就是存在例如更改某个值的状态。并发就改错了了。 别人用的不知道什么工具,就说一次发两条,每次都精准测出这个问题。
NorZ 2021-03-29
  • 打赏
  • 举报
回复
你服务器存在怎样的缺陷,让你觉得这个测试用例可以发现 bug ? 另外高并发这个...你10个实在太少,并达不到高并发的条件
赵4老师 2021-03-29
  • 打赏
  • 举报
回复
对竞争资源只读,不存在冲突。

64,688

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧