找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4992|回复: 5

Singleton::close阻塞问题

[复制链接]
发表于 2008-6-3 15:14:53 | 显示全部楼层 |阅读模式
typedef ACE_Unmanaged_Singleton<MyClass, ACE_Recursive_Thread_Mutex >   _singleton;

在程序退出时调用_singleton::close()结果阻塞在这个方法上了,请问各位,这是什么原因呢?
发表于 2008-6-3 16:21:05 | 显示全部楼层
要看一下代码了,贴上相关的代码看看。
发表于 2008-7-31 19:45:12 | 显示全部楼层
我在使用ACE_Unmanaged_Singleton的时候,释放资源调用ACE_Unmanaged_Singleton::close(),编译器却提示:
1>Compiling...
1>rebuild_thread.cpp
1>.\src\rebuild_thread.cpp(250) : error C2039: 'closesocket' : is not a member of 'ACE_Unmanaged_Singleton'
1>        with
1>        [
1>            TYPE=RebuildThread,
1>            ACE_LOCK=ACE_Thread_Mutex
1>        ]
1>.\src\rebuild_thread.cpp(250) : error C2660: 'closesocket' : function does not take 0 arguments

RebuildThread类的定义如下:

class RebuildThread : public ACE_Task
{
public:
        RebuildThread()        {}
        ~RebuildThread()        {}

        virtual int svc();

        int                ProcessPacketFromFile( const char *filename );

        static void                ReconPacket( DumpFile &dumpfile, const struct pcap_pkthdr *header, const u_char *pkt_data );

        void unbindNonActiveHash();

        static void fini();

private:
        ACE_Thread_Mutex mutex_;
};

typedef ACE_Unmanaged_Singleton REBUILD_THREAD;

其中REBUILD_THREAD::close()是在fini()函数中调用的,请问这是什么原因呢? :(
发表于 2008-7-31 22:29:08 | 显示全部楼层
'closesocket' : is not a member of 'ACE_Unmanaged_Singleton'
代码写错了。closesocket是API,和'ACE_Unmanaged_Singleton'无关。
发表于 2008-8-1 09:39:12 | 显示全部楼层
原帖由 winston 于 2008-7-31 22:29 发表
'closesocket' : is not a member of 'ACE_Unmanaged_Singleton'
代码写错了。closesocket是API,和'ACE_Unmanaged_Singleton'无关。


嗯,这个我知道,但是我调用的是ACE_Unmanaged_Singleton::close(),编译器为什么提示这样的错误呢?
发表于 2008-8-1 11:28:32 | 显示全部楼层
搞定了,是因为项目中还用了 libnet 库,而libnet.h这个头文件中有如下的宏定义:

/* Some UNIX to Win32 conversions */
#define STDOUT_FILENO stdout
#define snprintf _snprintf
#define write _write
#define open _open
#define random rand
#define close closesocket
#define __func__ __FUNCTION__

所以就导致了如上的编译错误。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-4-28 06:24 , Processed in 0.011691 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表