Singleton::close阻塞问题
typedef ACE_Unmanaged_Singleton<MyClass, ACE_Recursive_Thread_Mutex > _singleton;在程序退出时调用_singleton::close()结果阻塞在这个方法上了,请问各位,这是什么原因呢? 要看一下代码了,贴上相关的代码看看。 我在使用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()函数中调用的,请问这是什么原因呢? :( 'closesocket' : is not a member of 'ACE_Unmanaged_Singleton'
代码写错了。closesocket是API,和'ACE_Unmanaged_Singleton'无关。 原帖由 winston 于 2008-7-31 22:29 发表 http://www.acejoy.com/bbs/images/common/back.gif
'closesocket' : is not a member of 'ACE_Unmanaged_Singleton'
代码写错了。closesocket是API,和'ACE_Unmanaged_Singleton'无关。
嗯,这个我知道,但是我调用的是ACE_Unmanaged_Singleton::close(),编译器为什么提示这样的错误呢? 搞定了,是因为项目中还用了 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__
所以就导致了如上的编译错误。
页:
[1]