سؤال

I have a critical section that is shared between two threads:

TCriticalSection        lock_measDataBuff;

I have declared this variable as global. Now because Delphi style classes must be constructed using operator new, i have modified above declaration as follows:

TCriticalSection        *lock_measDataBuff;

Where is the best place to initialize the lock variable using operator new? Where is the best place to finalize the global variable using operator delete? Should it be WinMain method? Constructor of one of the classes accessing lock variable? Or some other place in the code?

هل كانت مفيدة؟

المحلول

I would use std::auto_ptr or boost::unique_ptr to handle all of that for you, eg:

#include <memory>

std::auto_ptr<TCriticalSection> lock_measDataBuff(new TCriticalSection);

نصائح أخرى

As you are creating a global variable, you will need to initialize before you create the threads, which would be main, and the best place to release the memory would be after the threads end

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top