首页| 论坛| 消息

标题:【未解决】饿汉式单例开辟线程失败,求解原因
作者:shixingya
日期:2022-09-30 10:19
内容:

以下DEMO用VS2017编译,必现线程创建卡住,无下文。
VS2019、Ubuntu下编译,运行正常。 求解具体原因,是IDE的问题吗?
.


代码附在下面,也可从这里下载 https://github.com/shixingya/selfFileBed/raw/main/hungry_thread_create_in_singleton.zip
dllimpl.h
#ifndef DLL_IMPL_H
#define DLL_IMPL_H
#include
#include
#include
#ifndef XTHREADPOOL_DLL
# ifdef _WIN32
#if defined( BUILD_DLL )
#define XTHREADPOOL_DLL __declspec(dllexport)
#elif defined( USE_DLL )
#define XTHREADPOOL_DLL __declspec(dllimport)
#else
#define XTHREADPOOL_DLL
#endif
# else
#define XTHREADPOOL_DLL
# endif
#endif
class XTHREADPOOL_DLL DLL_IMPL {
public:
DLL_IMPL() {
std::cout


#1 [onlyone 09-30 11:34]
还是按照流程写。
我记得 std:thread 需要有个 t.start() 启动 ?
如果不启动,下面的join肯定会卡主吧,一直死等线程结束。线程都没开始,等到天荒地老也不会结束啊。再者,你调试一下不久明白了,只有Join可能卡死。
#2 [xlinger 11-21 13:11]
在 dll 中直接创建线程是不对的
https://stackoverflow.com/questions/48809595/how-to-create-threads-in-dlls-c
#3 [圣域天子 11-21 13:18]
总觉得有些人比孔乙己还厉害。近20年来软件各方各面都搞出来一堆新名词,以彰显自己的能力
#4 [snow_man_0 11-21 14:41]
在构造函数里放两句话,就解决了
static bool flag=false;
if (flag==false) flag=true;
else "程序闪退";
不知道我理解的对不对
#5 [fsu0413 11-23 08:40]
DLL里带全局变量真的好吗。。。。
试试局部静态变量吧,那个是在第一次代码运行到里面的时候构造的

回复 发表
主题 版块