gpt4 book ai didi

C++ std::stringstream 似乎导致线程在 SunOS 下挂起或死亡

转载 作者:太空宇宙 更新时间:2023-11-04 12:25:30 25 4
gpt4 key购买 nike

我有一个在 Linux 下使用 GCC 4.2 开发的应用程序,它大量使用字符串流来包装和解包通过网络发送的数据。 (因为我使用的 Grid API 需要它)。在 Linux 下一切正常,但是当我部署到 SunOS(v5.10 运行 SPARC)并使用 GCC 3.4.6 编译时,应用程序在到达使用字符串流的点时挂起。

**** 新信息添加于 2010 年 9 月 7 日****所以我仍然没有解决这个问题,但经过大量修改后,我终于找到了线索。事实上,我认为我发现了问题,但我不知道如何解决它!请参阅下面的链接器输出:

ld: warning: symbol `typeinfo for std::basic_iostream<char, std::char_traits<char> >' has differing sizes:
(file /home/roony/dssdk/cppdriver/lib/libdsDriverGCC3.so value=0x28; file /usr/sfw/lib/libstdc++.so value=0x20);
/home/roony/dssdk/cppdriver/lib/libdsDriverGCC3.so definition taken

所以警告说两个库之间的 iostream 等定义不匹配,但是如何修复或覆盖其中一个。****结束新信息****

更详细地说:主线程接受来自客户端的请求并启动一个新的 pthread 来处理每个请求。子线程使用stringstreams打包数据。当子线程到达那个点时,它似乎会挂起一秒钟然后死掉。主线程不受影响。

stringstream 和 GCC 3.4.6 或 SunOS 或 SPARC 是否存在任何已知问题?我还没有找到任何东西......

谁能建议一种更好的方法来打包和解包大量数据字符串或字节流?

很抱歉没有发布代码,但这对我来说似乎比简单的语法错误更复杂。尽管如此,线程崩溃了:

std::stringstream mystringstream;  //not here
mystringstream << "some data: "; //but here

也就是说,我可以声明字符串流,但是当我尝试使用它时出现问题。

最佳答案

可能您要放入流中的“某些数据”无效(例如已经释放或未正确分配的char*/...)或数据被修改同时使用不同的线程。

关于C++ std::stringstream 似乎导致线程在 SunOS 下挂起或死亡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2731221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com