Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #92238

Re: Thread-safe initialization of static objects

From Bonita Montero <Bonita.Montero@gmail.com>
Newsgroups comp.lang.c++
Subject Re: Thread-safe initialization of static objects
Date 2023-09-29 21:09 +0200
Organization A noiseless patient Spider
Message-ID <uf77d7$dnjd$1@dont-email.me> (permalink)
References (20 earlier) <6ba8ab42-f622-4c48-973e-8800f3f44a66n@googlegroups.com> <861qehggye.fsf@linuxsc.com> <uf75ud$de0v$1@dont-email.me> <uf76hu$di35$1@dont-email.me> <uf76t9$de0v$3@dont-email.me>

Show all headers | View raw


Am 29.09.2023 um 21:00 schrieb Chris M. Thomasson:

> Bonita, you have a lot to learn about synchronization algorithms... I 

Write sth. like that:

// header:

#pragma once
#include <cstdint>
#include <cassert>
#include <thread>
#include <new>
#include <atomic>
#include <stdexcept>
#include <exception>
#include <limits>
#include <cstdint>
#include <semaphore>
#include <string>
#include <optional>
#include "thread_id.h"
#include "msvc-disabler.h"

#if defined(__llvm__)
	#pragma clang diagnostic push
	#pragma clang diagnostic ignored "-Wdangling-else"
#endif

struct wbias_shared_mutex;

struct wbsm_exception : public std::exception
{
	enum reason
	{
		SHARER_COUNTER_SATURATED = 1,
		WATING_EXCLUSIVE_COUNTER_SATURATED = 2,
		RECURSION_COUNTER_SATURATED = 3
	};
	wbsm_exception() = delete;
	wbsm_exception( wbsm_exception const & ) = default;
	reason get_reason();
	virtual char const *what() const noexcept;
private:
	friend struct wbias_shared_mutex;
	wbsm_exception( reason r, char const *what );
	reason m_reason;
	std::string m_what;
};

inline wbsm_exception::wbsm_exception( reason r, char const *what ) :
	m_reason( r ),
	m_what( what )
{
}

inline wbsm_exception::reason wbsm_exception::get_reason()
{
	return m_reason;
}

static_assert(std::atomic<uint64_t>::is_always_lock_free, "uint64_t must 
be lock-free");

struct
#if defined(__cpp_lib_hardware_interference_size)
	alignas(std::hardware_destructive_interference_size)
#else
	alignas(64)
#endif
	wbias_shared_mutex
{
	wbias_shared_mutex( int16_t maxExclusiveSpinCount = 0, int16_t 
maxSharedSpinCount = 0 );
	wbias_shared_mutex( wbias_shared_mutex const & ) = delete;
	void operator =( wbias_shared_mutex const & ) = delete;
	~wbias_shared_mutex();
	void lock_shared( bool force = false );
	bool try_lock_shared( bool force = false );
	void unlock_shared();
	void shared_to_exclusive( thread_id threadId = thread_self() );
	void lock_exclusive( thread_id threadId = thread_self() );
	bool try_lock_exclusive( thread_id threadId = thread_self() );
	bool lock_preferred_shared( bool force = false, thread_id threadId = 
thread_self() );
	void unlock_exclusive( thread_id threadId = thread_self() );
	void exclusive_to_shared( bool force = false );
	bool is_shared();
	bool is_exclusive();
	bool we_are_exclusive( thread_id threadId = thread_self() );
	thread_id get_exclusive_thread_id();
	uint32_t get_exclusive_recursion_count();
	int16_t max_exclusive_spin_count( int16_t max = 100 );
	int16_t max_shared_spin_count( int16_t max = 100 );
private:
	static_assert(std::atomic<uint64_t>::is_always_lock_free, 
"std::atomic<uint64_t> must be always lock-free");
	std::atomic<uint64_t> m_atomic;
	std::atomic<thread_id> m_exclusiveId;
	std::atomic_uint32_t m_exclusiveRecursionCount;
	std::atomic_int16_t m_exclusiveSpinCount, m_sharedSpinCount; // 
adaptive spinning taken from glibc
	std::atomic_int16_t m_maxExclusiveSpinCount, m_maxSharedSpinCount;
	std::counting_semaphore<(1 << 21) - 1> m_releaseSharedSem;
	std::binary_semaphore m_releaseExclusiveSem;
	static unsigned const
		WAITING_SHARERS_BASE = 21,
		WAITING_EXCLUSIVE_BASE = 2 * 21,
		EXCLUSIVE_FLAG_BASE = 3 * 21;
	static constexpr uint64_t
		MASK21 = 0x1FFFFFu,
		SHARERS_MASK = MASK21,
		WAITING_SHARERS_MASK = MASK21 << WAITING_SHARERS_BASE,
		WAITING_EXCLUSIVE_MASK = MASK21 << WAITING_EXCLUSIVE_BASE,
		EXCLUSIVE_FLAG_MASK = (uint64_t)1 << EXCLUSIVE_FLAG_BASE,
		SHARER_VALUE = (uint64_t)1,
		WAITING_SHARERS_VALUE = (uint64_t)1 << WAITING_SHARERS_BASE,
		WAITING_EXCLUSIVE_VALUE = (uint64_t)1 << WAITING_EXCLUSIVE_BASE;
	static constexpr short DEFAULT_MAX_SPIN_COUNT = 100;
#if !defined(NDEBUG)
	static bool check( uint64_t flags );
#endif
	bool internalSpinLockShared( uint64_t &cmp, bool force );
	void internalLockShared( uint64_t cmp, bool force );
	bool internalSpinLockExclusive( uint64_t &cmp, thread_id threadId );
	void cpuPause();
};

inline bool wbias_shared_mutex::is_shared()
{
	return m_atomic.load( std::memory_order_relaxed ) & SHARERS_MASK;
}

inline bool wbias_shared_mutex::is_exclusive()
{
	return m_atomic.load( std::memory_order_relaxed ) & EXCLUSIVE_FLAG_MASK;
}

inline bool wbias_shared_mutex::we_are_exclusive( thread_id threadId )
{
	return (m_atomic.load( std::memory_order_relaxed ) & EXCLUSIVE_FLAG_MASK)
		&& m_exclusiveId.load( std::memory_order_relaxed ) == threadId;
}

inline thread_id wbias_shared_mutex::get_exclusive_thread_id()
{
	//std::atomic_thread_fence( std::memory_order_acquire );
	return m_exclusiveId.load( std::memory_order_relaxed );
}

inline uint32_t wbias_shared_mutex::get_exclusive_recursion_count()
{
	return m_exclusiveRecursionCount.load( std::memory_order_relaxed );
}

struct wbsm_lock
{
	enum
	{
		UNLOCKED,
		SHARED,
		EXLUSIVE
	};
	wbsm_lock();
	wbsm_lock( wbsm_lock const &other );
	wbsm_lock( wbsm_lock &&other ) noexcept;
	wbsm_lock( wbias_shared_mutex &mtx, bool lockShared = true, thread_id 
threadId = thread_self() );
	~wbsm_lock();
	wbsm_lock &operator =( wbsm_lock const &other );
	wbsm_lock &operator =( wbsm_lock &&other ) noexcept;
	void lock_shared( wbias_shared_mutex &mtx );
	void shared_to_exclusive( thread_id threadId = thread_self() );
	void exclusive_to_shared( bool force = false );
	void lock_exclusive( wbias_shared_mutex &mtx, thread_id threadId = 
thread_self() );
	void unlock();
	void lock_preferred_shared( wbias_shared_mutex &mtx, thread_id threadId 
= thread_self() );
	bool is_locked() const;
	bool is_shared() const;
	bool is_exclusive() const;
	thread_id get_exclusive_thread_id() const;
	wbias_shared_mutex *get_mutex() const;
	std::pair<int, wbias_shared_mutex *> get_state() const;
	void set_state( int state, wbias_shared_mutex *pMtx );
private:
	wbias_shared_mutex *m_mtx;
	bool m_isShared;
	thread_id m_threadId;
};

inline wbsm_lock::wbsm_lock()
{
	m_mtx = nullptr;
}

inline wbsm_lock::wbsm_lock( wbsm_lock &&other ) noexcept :
	m_mtx( other.m_mtx ),
	m_isShared( other.m_isShared ),
	m_threadId( other.m_threadId )
{
	other.m_mtx = nullptr;
#if !defined(NDEBUG)
	other.m_threadId = 0;
#endif
}

inline bool wbsm_lock::is_locked() const
{
	return m_mtx != nullptr;
}

inline bool wbsm_lock::is_shared() const
{
	assert(m_mtx);
	return m_isShared;
}

inline bool wbsm_lock::is_exclusive() const
{
	assert(m_mtx);
	return !m_isShared;
}

inline thread_id wbsm_lock::get_exclusive_thread_id() const
{
	return m_threadId;
}

inline wbias_shared_mutex *wbsm_lock::get_mutex() const
{
	return m_mtx;
}

#if defined(__llvm__)
	#pragma clang diagnostic pop
#endif

// source:

#include <utility>
#include "wbias_shared_mutex.h"
#include "xassert.h"
#include "exc_encapsulate.h"
#if defined(_MSC_VER)
	#include <intrin.h>
#elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
	#include <immintrin.h>
#endif
#if defined(__llvm__)
	#pragma clang diagnostic push
	#pragma clang diagnostic ignored "-Wdangling-else"
#endif

char const *wbsm_exception::what() const noexcept
{
	return m_what.c_str();
}

#if !defined(NDEBUG)
inline bool wbias_shared_mutex::check( std::uint64_t flags )
{
	unsigned
		sharers = (unsigned)(flags & MASK21),
		waitingExclusive = (unsigned)((flags >> WAITING_EXCLUSIVE_BASE) & MASK21),
		exclusiveFlag = (unsigned)((flags >> EXCLUSIVE_FLAG_BASE) & 1);
	if( sharers && exclusiveFlag )
		return false;
	if( waitingExclusive && !exclusiveFlag && !sharers )
		return false;
	return true;
}
#endif

wbias_shared_mutex::wbias_shared_mutex( int16_t maxExclusiveSpinCount, 
int16_t maxSharedSpinCount ) :
	m_atomic( 0 ),
	m_exclusiveId(),
	m_exclusiveSpinCount( 0 ),
	m_sharedSpinCount( 0 ),
	m_maxExclusiveSpinCount( maxExclusiveSpinCount ),
	m_maxSharedSpinCount( maxSharedSpinCount ),
	m_releaseSharedSem( 0 ),
	m_releaseExclusiveSem( false )
{
}

wbias_shared_mutex::~wbias_shared_mutex()
{
	assert(!m_atomic);
}

// throws wbsm_exception if waiting sharers counter saturates

void wbias_shared_mutex::lock_shared( bool force )
{
	using namespace std;
	uint64_t cmp = m_atomic.load( memory_order_relaxed );
	if( internalSpinLockShared( cmp, force ) )
		return;
	internalLockShared( cmp, force );
}

inline bool wbias_shared_mutex::internalSpinLockShared( std::uint64_t 
&cmp, bool force )
{
	using namespace std;
	int16_t maxSharedSpinCount = m_maxSharedSpinCount.load( 
memory_order_relaxed );
	if( maxSharedSpinCount <= 0 )
		return false;
	int16_t sharedSpinCount = m_sharedSpinCount.load( memory_order_relaxed );
	int32_t spinLimit = (int32_t)sharedSpinCount * 2 + 10;
	spinLimit = spinLimit <= maxSharedSpinCount ? spinLimit : 
maxSharedSpinCount;
	int32_t spinCount = 0;
	bool locked = false;
	for( ; ; )
	{
		assert(check( cmp ));
		if( !(cmp & (EXCLUSIVE_FLAG_MASK | (!force ? WAITING_EXCLUSIVE_MASK : 
0))) )
			if( (cmp & SHARERS_MASK) == SHARERS_MASK )
				break;
			else if( m_atomic.compare_exchange_weak( cmp, cmp + SHARER_VALUE, 
memory_order_acquire, memory_order_relaxed ) )
			{
				locked = true;
				break;
			}
		if( ++spinCount >= spinLimit )
			break;
		cpuPause();
		cmp = m_atomic.load( memory_order_relaxed );
	}
	m_sharedSpinCount.store( sharedSpinCount + ((int16_t)spinCount - 
sharedSpinCount) / 8, memory_order_relaxed );
	return locked;
}

// throws wbsm_exception if waiting sharers counter saturates

inline void wbias_shared_mutex::internalLockShared( uint64_t cmp, bool 
force )
{
	using namespace std;
	for( ; ; )
	{
		assert(check( cmp ));
		if( !(cmp & (EXCLUSIVE_FLAG_MASK | (!force ? WAITING_EXCLUSIVE_MASK : 
0))) )
			if( (cmp & SHARERS_MASK) == SHARERS_MASK )
				throw wbsm_exception( wbsm_exception::SHARER_COUNTER_SATURATED, 
"wbsm-lock sharer-counter saturated" );
			else if( m_atomic.compare_exchange_weak( cmp, cmp + SHARER_VALUE, 
memory_order_acquire, memory_order_relaxed ) )
				return;
			else;
		else
			if( (cmp & SHARERS_MASK) + ((cmp & WAITING_SHARERS_MASK) >> 
WAITING_SHARERS_BASE) >= SHARERS_MASK )
				throw wbsm_exception( wbsm_exception::SHARER_COUNTER_SATURATED, 
"wbsm-lock sharer-counter saturated" );
			else if( m_atomic.compare_exchange_weak( cmp, cmp + 
WAITING_SHARERS_VALUE, memory_order_relaxed, memory_order_relaxed ) )
			{
				exc_terminate( [&]() { m_releaseSharedSem.acquire(); } );
				atomic_thread_fence( memory_order_acquire );
				return;
			}
	}
}

// throws wbsm_exception if recursion-counter saturates

inline bool wbias_shared_mutex::internalSpinLockExclusive( std::uint64_t 
&cmp, thread_id threadId )
{
	using namespace std;
	assert(check( cmp ));
	if( (cmp & EXCLUSIVE_FLAG_MASK) && m_exclusiveId.load( 
memory_order_relaxed ) == threadId )
	{
		uint32_t exclusiveRecursionCount = m_exclusiveRecursionCount.load( 
memory_order_relaxed );
		if( exclusiveRecursionCount == (uint32_t)-1 )
			throw wbsm_exception( wbsm_exception::RECURSION_COUNTER_SATURATED, 
"wbsm-lock recursion-counter saturated" );
		m_exclusiveRecursionCount.store( exclusiveRecursionCount + 1, 
memory_order_relaxed );
		return true;
	}
	int16_t maxExclusiveSpinCount = m_maxExclusiveSpinCount.load( 
memory_order_relaxed );
	if( maxExclusiveSpinCount <= 0 )
		return false;
	int16_t exclusiveSpinCount = m_exclusiveSpinCount.load( 
memory_order_relaxed );
	int32_t spinLimit = (int32_t)exclusiveSpinCount * 2 + 10;
	spinLimit = spinLimit <= maxExclusiveSpinCount ? spinLimit : 
maxExclusiveSpinCount;
	int32_t spinCount = 0;
	bool locked = false;
	for( ; ; )
	{
		assert(check( cmp ));
		cmp = 0;
		if( m_atomic.compare_exchange_weak( cmp, EXCLUSIVE_FLAG_MASK, 
memory_order_acquire, memory_order_relaxed ) )
		{
			m_exclusiveId.store( threadId, memory_order_relaxed );
			m_exclusiveRecursionCount.store( 0, memory_order_relaxed );
			locked = true;
			break;
		}
		if( ++spinCount >= spinLimit )
			break;
		cpuPause();
		cmp = m_atomic.load( memory_order_relaxed );
	}
	m_exclusiveSpinCount.store( exclusiveSpinCount + ((int16_t)spinCount - 
exclusiveSpinCount) / 8, memory_order_relaxed );
	return locked;
}

bool wbias_shared_mutex::try_lock_shared( bool force )
{
	using namespace std;
	uint64_t cmp = m_atomic.load( memory_order_relaxed );
	return internalSpinLockShared( cmp, force );
}

void wbias_shared_mutex::unlock_shared()
{
	using namespace std;
	for( uint64_t cmp = m_atomic.load( memory_order_relaxed ); ; )
	{
		assert(check( cmp ));
		assert((cmp & SHARERS_MASK) >= SHARER_VALUE);
		if( !(cmp & WAITING_EXCLUSIVE_MASK) || (cmp & SHARERS_MASK) != 
SHARER_VALUE )
			if( m_atomic.compare_exchange_weak( cmp, cmp - SHARER_VALUE, 
memory_order_release, memory_order_relaxed ) )
				return;
			else;
		else
		{
			assert(!(cmp & EXCLUSIVE_FLAG_MASK));
			if( m_atomic.compare_exchange_weak( cmp, (cmp - SHARER_VALUE - 
WAITING_EXCLUSIVE_VALUE) | EXCLUSIVE_FLAG_MASK, memory_order_release, 
memory_order_relaxed ) )
			{
				exc_terminate( [&]() { m_releaseExclusiveSem.release(1); });
				return;
			}
		}
	}
}

// throws wbsm_exception if waiting exclusive counter saturates

void wbias_shared_mutex::shared_to_exclusive( thread_id threadId )
{
	using namespace std;
	uint64_t cmp = m_atomic.load( memory_order_relaxed );
	int16_t maxExclusiveSpinCount = m_maxExclusiveSpinCount.load( 
memory_order_relaxed );
	if( maxExclusiveSpinCount > 0 )
	{
		int16_t exclusiveSpinCount = m_exclusiveSpinCount.load( 
memory_order_relaxed );
		int32_t spinLimit = (int32_t)exclusiveSpinCount * 2 + 10;
		spinLimit = spinLimit <= maxExclusiveSpinCount ? spinLimit : 
maxExclusiveSpinCount;
		int32_t spinCount = 0;
		bool locked = false;
		for( ; ; )
		{
			assert(check( cmp ));
			assert((cmp & SHARERS_MASK) >= SHARER_VALUE);
			cmp = (cmp & ~SHARERS_MASK) | 1;
			if( m_atomic.compare_exchange_weak( cmp, (cmp & ~SHARERS_MASK) | 
EXCLUSIVE_FLAG_MASK, memory_order_acquire, memory_order_relaxed ) )
			{
				m_exclusiveId.store( threadId, memory_order_relaxed );
				m_exclusiveRecursionCount.store( 0, memory_order_relaxed );
				locked = true;
				break;
			}
			if( ++spinCount >= spinLimit )
				break;
			cpuPause();
			cmp = m_atomic.load( memory_order_relaxed );
		}
		m_exclusiveSpinCount.store( exclusiveSpinCount + ((int16_t)spinCount - 
exclusiveSpinCount) / 8, memory_order_relaxed );
		if( locked )
			return;
	}
	for( ; ; )
	{
		assert(check( cmp ));
		assert((cmp & SHARERS_MASK) >= SHARER_VALUE);
		if( (cmp & SHARERS_MASK) == SHARER_VALUE )
			if( m_atomic.compare_exchange_weak( cmp, (cmp - SHARER_VALUE) | 
EXCLUSIVE_FLAG_MASK, memory_order_acquire, memory_order_relaxed ) )
			{
				m_exclusiveId.store( threadId, memory_order_relaxed );
				m_exclusiveRecursionCount.store( 0, memory_order_relaxed );
				return;
			}
			else;
		else
			if( (cmp & WAITING_EXCLUSIVE_MASK) == WAITING_EXCLUSIVE_MASK )
				throw wbsm_exception( 
wbsm_exception::WATING_EXCLUSIVE_COUNTER_SATURATED, "wbsm-lock 
waiting-exclusive-count saturated" );
			else if( m_atomic.compare_exchange_weak( cmp, cmp - SHARER_VALUE + 
WAITING_EXCLUSIVE_VALUE, memory_order_relaxed, memory_order_relaxed ) )
			{
				exc_terminate( [&]() { m_releaseExclusiveSem.acquire(); } );
				atomic_thread_fence( memory_order_acquire );
				m_exclusiveId.store( threadId, memory_order_relaxed );
				m_exclusiveRecursionCount.store( 0, memory_order_relaxed );
				return;
			}
	}
}

// throws wbsm_exception if waiting exclusive counter saturates

void wbias_shared_mutex::lock_exclusive( thread_id threadId )
{
	using namespace std;
	uint64_t cmp = m_atomic.load( memory_order_acquire );
	if( internalSpinLockExclusive( cmp, threadId ) )
		return;
	for( ; ; )
	{
		assert(check( cmp ));
		if( !(cmp & (EXCLUSIVE_FLAG_MASK | SHARERS_MASK)) )
			if( m_atomic.compare_exchange_weak( cmp, cmp | EXCLUSIVE_FLAG_MASK, 
memory_order_acquire, memory_order_relaxed ) )
			{
				m_exclusiveId.store( threadId, memory_order_relaxed );
				m_exclusiveRecursionCount.store( 0, memory_order_relaxed );
				return;
			}
			else;
		else
			if( (cmp & WAITING_EXCLUSIVE_MASK) == WAITING_EXCLUSIVE_MASK )
				throw wbsm_exception( 
wbsm_exception::WATING_EXCLUSIVE_COUNTER_SATURATED, "wbsm-lock 
waiting-waiters-counter saturated" );
			else if( m_atomic.compare_exchange_weak( cmp, cmp + 
WAITING_EXCLUSIVE_VALUE, memory_order_relaxed, memory_order_relaxed ) )
			{
				exc_terminate( [&]() { m_releaseExclusiveSem.acquire(); } );
				atomic_thread_fence( memory_order_acquire );
				m_exclusiveId.store( threadId, memory_order_relaxed );
				m_exclusiveRecursionCount.store( 0, memory_order_relaxed );
				return;
			}
	}
}

bool wbias_shared_mutex::try_lock_exclusive( thread_id threadId )
{
	using namespace std;
	uint64_t cmp = m_atomic.load( memory_order_acquire );
	return internalSpinLockExclusive( cmp, threadId );
}

// throws wbsm_exception if recursion-counter saturates
// throws wbsm_exception if waiting sharers counter saturates

bool wbias_shared_mutex::lock_preferred_shared( bool force, thread_id 
threadId )
{
	using namespace std;
	uint64_t cmp = m_atomic.load( memory_order_acquire );
	assert(check( cmp ));
	if( (cmp & EXCLUSIVE_FLAG_MASK) && m_exclusiveId.load( 
memory_order_relaxed ) == threadId )
	{
		uint32_t exclusiveRecursionCount = m_exclusiveRecursionCount.load( 
memory_order_relaxed );
		if( exclusiveRecursionCount == (uint32_t)-1 )
			throw wbsm_exception( wbsm_exception::RECURSION_COUNTER_SATURATED, 
"wbsm-lock recursion-counter saturated" );
		m_exclusiveRecursionCount.store( exclusiveRecursionCount + 1, 
memory_order_relaxed );
		return false;
	}
	if( internalSpinLockShared( cmp, force ) )
		return true;
	internalLockShared( cmp, force );
	return true;
}

void wbias_shared_mutex::unlock_exclusive( thread_id threadId )
{
	using namespace std;
	uint64_t cmp = m_atomic.load( memory_order_acquire );
	assert(check( cmp ));
	assert((cmp & EXCLUSIVE_FLAG_MASK) && m_exclusiveId == threadId);
	if( uint32_t recCount; (cmp & EXCLUSIVE_FLAG_MASK)
		&& (recCount = m_exclusiveRecursionCount.load( memory_order_relaxed ))
		&& m_exclusiveId.load( memory_order_relaxed ) == threadId )
	{
		m_exclusiveRecursionCount.store( recCount - 1, memory_order_relaxed );
		return;
	}
	m_exclusiveId.store( nullptr, memory_order_relaxed );
	for( ; ; )
	{
		assert(check( cmp ));
		assert(cmp & EXCLUSIVE_FLAG_MASK);
		if( (cmp & WAITING_EXCLUSIVE_MASK) )
			if( m_atomic.compare_exchange_weak( cmp, cmp - 
WAITING_EXCLUSIVE_VALUE, memory_order_release, memory_order_relaxed ) )
			{
				exc_terminate( [&]() { m_releaseExclusiveSem.release( 1 ); } );
				return;
			}
			else
				continue;
		if( (cmp & WAITING_SHARERS_MASK) )
		{
			uint64_t
				waitingSharers = cmp & WAITING_SHARERS_MASK,
				wakeups = waitingSharers >> WAITING_SHARERS_BASE;
			if( m_atomic.compare_exchange_weak( cmp, (cmp & ~EXCLUSIVE_FLAG_MASK) 
- waitingSharers + wakeups, memory_order_release, memory_order_relaxed ) )
			{
				exc_terminate( [&]() { m_releaseSharedSem.release( (unsigned)wakeups 
); } );
				return;
			}
			else
				continue;
		}
		if( m_atomic.compare_exchange_weak( cmp, 0, memory_order_release, 
memory_order_relaxed ) )
			return;
	}
}

// throws wbsm_exception if waiting sharers counter saturates
// (lock remains exclusive)

void wbias_shared_mutex::exclusive_to_shared( bool force )
{
	using namespace std;
	uint64_t cmp = m_atomic.load( std::memory_order_relaxed );
	assert((cmp & EXCLUSIVE_FLAG_MASK) && !m_exclusiveRecursionCount);
	thread_id recoverThreadId = m_exclusiveId.load( memory_order_relaxed );
	m_exclusiveId.store( nullptr, memory_order_relaxed );
	auto recoverThread = [&]( auto ) { m_exclusiveId.store( 
recoverThreadId, memory_order_relaxed ); };
	for( ; ; )
	{
		assert(check( cmp ));
		uint64_t
			waitingSharers = cmp & WAITING_SHARERS_MASK,
			wakeups = waitingSharers >> WAITING_SHARERS_BASE;
		if( !(cmp & WAITING_EXCLUSIVE_MASK) || force )
			if( wakeups == SHARERS_MASK )
			{
				recoverThread( []() {} );
				throw wbsm_exception( wbsm_exception::SHARER_COUNTER_SATURATED, 
"wbsm-lock sharer-counter saturated" );
			}
			else if( m_atomic.compare_exchange_weak( cmp, (cmp & 
~EXCLUSIVE_FLAG_MASK) - waitingSharers + wakeups + SHARER_VALUE, 
memory_order_release, memory_order_relaxed ) )
			{
				if( wakeups )
					exc_terminate( [&]() { m_releaseSharedSem.release( 
(unsigned)wakeups ); } );
				return;
			}
			else
				continue;
		if( wakeups == SHARERS_MASK )
		{
			recoverThread( []() {} );
			throw wbsm_exception( wbsm_exception::SHARER_COUNTER_SATURATED, 
"wbsm-lock sharer-counter saturated" );
		}
		if( m_atomic.compare_exchange_weak( cmp, cmp - WAITING_EXCLUSIVE_VALUE 
+ WAITING_SHARERS_VALUE, memory_order_release, memory_order_relaxed ) )
		{
			exc_terminate( [&]()
				{
					m_releaseExclusiveSem.release( 1 );
					m_releaseSharedSem.acquire();
					atomic_thread_fence( memory_order_acquire );
				} );
			return;
		}
	}
}

inline void wbias_shared_mutex::cpuPause()
{
#if defined(_MSC_VER) || (defined(__GNUC__) || defined(__clang__)) && 
(defined(__x86_64__) || defined(__i386__))
	_mm_pause();
#elif (defined(__GNUC__) || defined(__clang__)) && (defined(__arm__) || 
defined(__aarch64__))
	__yield();
#else
	#error "need platform-specific pause-instruction"
#endif
}

int16_t wbias_shared_mutex::max_exclusive_spin_count( int16_t max )
{
	using namespace std;
	int16_t maxExclusiveSpinCount = m_maxExclusiveSpinCount.load( 
memory_order_relaxed );
	m_maxExclusiveSpinCount.store( max );
	return max;
}

int16_t wbias_shared_mutex::max_shared_spin_count( int16_t max )
{
	using namespace std;
	int16_t maxSharedSpinCount = m_maxSharedSpinCount.load( 
memory_order_relaxed );
	m_maxSharedSpinCount.store( max, memory_order_relaxed );
	return max;
}

// may throw wbsm_exception if mutex-counter saturates

inline wbsm_lock::wbsm_lock( wbsm_lock const &other ) :
	m_mtx( other.m_mtx ),
	m_isShared( other.m_isShared )
{
	if( m_isShared )
		m_mtx->lock_shared();
	else
		m_mtx->lock_exclusive( other.m_threadId ),
		m_threadId = m_mtx->get_exclusive_thread_id();
}

// may throw wbsm_exception if mutex-counter saturates

wbsm_lock::wbsm_lock( wbias_shared_mutex &mtx, bool lockShared, 
thread_id threadId )
{
	if( lockShared ) // [[likely]]
		mtx.lock_shared();
	else
		mtx.lock_exclusive( threadId ),
		m_threadId = mtx.get_exclusive_thread_id();
	m_mtx = &mtx;
	m_isShared = lockShared;
}

wbsm_lock::~wbsm_lock()
{
	if( !m_mtx )
		return;
	if( m_isShared ) [[likely]]
		m_mtx->unlock_shared();
	else
		m_mtx->unlock_exclusive( m_threadId );
}

// may throw wbsm_exception if mutex-counter saturates

wbsm_lock &wbsm_lock::operator =( wbsm_lock const &other )
{
	if( m_mtx == other.m_mtx )
		return *this;
	unlock();
	if( !other.m_mtx ) [[unlikely]]
		return *this;
	if( other.m_isShared )
		other.m_mtx->lock_shared();
	else
		other.m_mtx->lock_exclusive( other.m_threadId ),
		m_threadId = other.m_threadId;
	m_mtx = other.m_mtx;
	m_isShared = other.m_isShared;
	return *this;
}

wbsm_lock &wbsm_lock::operator =( wbsm_lock &&other ) noexcept
{
	if( m_mtx == other.m_mtx )
	{
		other.unlock();
		return *this;
	}
	unlock();
	m_mtx = other.m_mtx;
	m_isShared = other.m_isShared;
	m_threadId = other.m_threadId;
	other.m_mtx = nullptr;
#if !defined(NDEBUG)
	other.m_threadId = 0;
#endif
	return *this;
}

// may throw wbsm_exception if mutex-counter saturates

void wbsm_lock::lock_shared( wbias_shared_mutex &mtx )
{
	if( m_mtx == &mtx )
		if( m_isShared ) [[likely]]
			return;
		else
		{
			m_mtx->exclusive_to_shared();
			m_isShared = true;
#if !defined(NDEBUG)
			m_threadId = 0;
#endif
			return;
		}
	unlock();
	mtx.lock_shared();
	m_mtx = &mtx;
	m_isShared = true;
#if !defined(NDEBUG)
	m_threadId = 0;
#endif
}

// may throw wbsm_exception if mutex-counter saturates

void wbsm_lock::shared_to_exclusive( thread_id threadId )
{
	assert(m_mtx);
	if( m_isShared )
		m_mtx->shared_to_exclusive( threadId ),
		m_isShared = false;
	m_threadId = threadId;
}

// may throw wbsm_exception if mutex-counter saturates

void wbsm_lock::exclusive_to_shared( bool force )
{
	assert(m_mtx);
	if( m_isShared )
		return;
	m_mtx->exclusive_to_shared( force );
	m_isShared = true;
#if !defined(NDEBUG)
	m_threadId = 0;
#endif
}

// may throw wbsm_exception if mutex-counter saturates

void wbsm_lock::lock_exclusive( wbias_shared_mutex &mtx, thread_id 
threadId )
{
	if( m_mtx == &mtx )
		if( !m_isShared )
			return;
		else
		{
			m_mtx->shared_to_exclusive( threadId );
			m_isShared = false;
			m_threadId = threadId;
			return;
		}
	unlock();
	mtx.lock_exclusive( threadId );
	m_mtx = &mtx;
	m_isShared = false;
	m_threadId = threadId;
}

void wbsm_lock::unlock()
{
	if( !m_mtx ) [[unlikely]]
		return;
	if( m_isShared ) [[likely]]
		m_mtx->unlock_shared();
	else
		m_mtx->unlock_exclusive( m_threadId );
	m_mtx = nullptr;
}

// may throw wbsm_exception if mutex-counter saturates

void wbsm_lock::lock_preferred_shared( wbias_shared_mutex &mtx, 
thread_id threadId )
{
	if( m_mtx != &mtx )
		m_isShared = mtx.lock_preferred_shared( threadId ),
		m_mtx = &mtx;
	m_threadId = threadId;
}

std::pair<int, wbias_shared_mutex *> wbsm_lock::get_state() const
{
	if( !m_mtx ) [[unlikely]]
		return { wbsm_lock::UNLOCKED, nullptr };
	if( m_isShared ) [[likely]]
		return { wbsm_lock::SHARED, m_mtx };
	else		
		return { wbsm_lock::EXLUSIVE, m_mtx };
}

void wbsm_lock::set_state( int state, wbias_shared_mutex *pMtx )
{
	if( state == wbsm_lock::UNLOCKED )
		unlock();
	else if( state == wbsm_lock::SHARED )
		lock_shared( *pMtx );
	else if( state == wbsm_lock::EXLUSIVE )
		lock_exclusive( *pMtx );
}

Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-06 20:15 +0200
  Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-06 18:44 -0400
    Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-07 04:54 +0200
      Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-07 00:18 -0400
        Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-07 06:27 +0200
          Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-07 10:44 -0400
            Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-07 18:39 +0200
              Re: Thread-safe initialization of static objects scott@slp53.sl.home (Scott Lurndal) - 2023-09-07 17:27 +0000
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-07 11:06 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-07 12:20 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-07 12:52 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-07 12:58 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-07 13:31 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-08 13:20 -0700
                Re: Thread-safe initialization of static objects scott@slp53.sl.home (Scott Lurndal) - 2023-09-07 21:13 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-23 12:35 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-07 20:24 +0200
              Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-07 20:53 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-08 07:37 +0200
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-08 14:54 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-09 05:44 +0200
                Re: Thread-safe initialization of static objects Paavo Helde <eesnimi@osa.pri.ee> - 2023-09-09 17:54 +0300
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-09 19:26 +0200
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-09 13:42 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-09 21:15 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-09 13:37 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-10 10:57 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-10 06:51 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-10 17:46 +0200
                Re: Thread-safe initialization of static objects Paavo Helde <eesnimi@osa.pri.ee> - 2023-09-10 19:08 +0300
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-10 18:15 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-10 11:13 -0700
                Re: Thread-safe initialization of static objects Paavo Helde <eesnimi@osa.pri.ee> - 2023-09-10 21:38 +0300
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-11 04:02 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-10 20:33 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-10 21:50 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-11 15:44 +0200
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-11 15:49 +0200
                Re: Thread-safe initialization of static objects Paavo Helde <eesnimi@osa.pri.ee> - 2023-09-11 18:20 +0300
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-11 18:34 +0200
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-16 17:06 +0200
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-20 01:14 -0700
                Re: Thread-safe initialization of static objects scott@slp53.sl.home (Scott Lurndal) - 2023-09-20 13:32 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-20 11:51 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-10 09:32 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-10 11:14 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-10 18:50 -0400
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-10 21:42 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-11 23:58 -0400
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-17 14:02 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-18 20:11 -0400
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-10 11:12 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-10 18:05 -0400
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-09 11:49 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-09 21:17 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-09 12:20 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-09 21:55 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-09 12:59 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-09 13:00 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-10 10:58 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-10 11:05 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-10 11:08 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-09 12:21 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-09 13:41 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-10 10:59 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-10 11:09 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-10 11:12 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-11 16:29 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-11 12:41 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-12 04:28 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-11 22:39 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-12 11:44 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-12 11:33 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-12 20:43 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-12 15:55 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-12 15:56 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-13 11:53 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-13 16:23 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-14 11:10 +0200
                Re: Thread-safe initialization of static objects scott@slp53.sl.home (Scott Lurndal) - 2023-09-14 14:37 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-14 16:52 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-15 21:39 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-16 10:03 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-16 05:41 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-16 16:07 +0200
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-16 13:23 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-16 19:38 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-16 11:46 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 05:45 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-17 11:25 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 20:30 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-17 11:42 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 20:44 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-17 11:50 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 20:52 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-17 12:01 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 21:12 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-17 12:57 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-18 07:05 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 12:21 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 05:08 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 22:01 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 10:43 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-19 12:30 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-20 05:33 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-19 20:49 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 22:16 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-17 11:51 -0700
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-17 19:20 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 21:29 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-17 19:36 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-18 07:06 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-18 17:30 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-18 19:36 +0200
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-18 20:15 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 05:10 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 22:01 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 10:46 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-19 02:08 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 11:36 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-19 07:48 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 14:11 +0200
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 15:41 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-19 16:41 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 19:50 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-19 12:06 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-19 18:42 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-20 05:38 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-19 20:50 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-20 07:53 -0400
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-19 12:03 -0700
                Re: Thread-safe initialization of static objects scott@slp53.sl.home (Scott Lurndal) - 2023-09-19 13:49 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 16:14 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-19 12:07 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-19 18:45 -0400
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-19 15:50 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-20 05:35 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-19 21:01 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-20 07:54 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-20 15:18 +0200
                Re: Thread-safe initialization of static objects scott@slp53.sl.home (Scott Lurndal) - 2023-09-20 14:20 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-20 16:31 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-20 11:53 -0700
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-20 22:23 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-20 18:46 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-20 18:56 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-20 19:07 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-20 19:11 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-20 09:48 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-20 11:54 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-20 12:36 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-20 14:02 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-20 21:12 -0700
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-21 04:46 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-20 21:52 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-21 01:23 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-20 21:13 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-21 01:04 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-21 11:13 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-21 05:41 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-20 18:46 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-21 05:42 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-20 21:24 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-21 09:47 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-21 11:19 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 04:28 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-21 23:14 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 06:39 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-22 07:31 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 14:15 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-22 18:31 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-23 06:38 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-22 23:12 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-23 09:40 -0400
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-23 11:39 -0700
                Re: Thread-safe initialization of static objects Daniel <danielaparker@gmail.com> - 2023-09-24 05:57 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-21 07:36 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-21 14:40 +0200
                Re: Thread-safe initialization of static objects David Brown <david.brown@hesbynett.no> - 2023-09-21 15:05 +0200
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-21 16:17 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-21 11:25 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 04:29 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-22 17:18 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-21 07:48 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-21 17:03 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-21 11:27 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-21 11:21 -0700
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-21 18:42 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-22 23:21 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-26 15:28 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-26 15:31 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 04:29 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-22 17:21 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-19 21:09 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-19 09:55 -0700
                Re: Thread-safe initialization of static objects Paavo Helde <eesnimi@osa.pri.ee> - 2023-09-19 21:11 +0300
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 20:59 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-19 12:12 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-20 05:35 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-19 21:01 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-19 18:47 -0400
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-20 20:22 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-21 09:58 +0200
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-21 10:03 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-21 07:42 -0400
                Re: Thread-safe initialization of static objects scott@slp53.sl.home (Scott Lurndal) - 2023-09-21 14:54 +0000
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-21 22:25 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 06:40 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-22 07:30 -0400
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-22 04:58 -0700
                Re: Thread-safe initialization of static objects David Brown <david.brown@hesbynett.no> - 2023-09-22 16:27 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-22 10:41 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 19:50 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-22 17:24 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-22 21:58 -0400
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-22 20:33 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-21 01:38 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-21 11:02 +0200
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-21 02:59 -0700
                Re: Thread-safe initialization of static objects David Brown <david.brown@hesbynett.no> - 2023-09-21 13:19 +0200
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-21 05:01 -0700
                Re: Thread-safe initialization of static objects David Brown <david.brown@hesbynett.no> - 2023-09-21 15:03 +0200
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-21 07:30 -0700
                Re: Thread-safe initialization of static objects David Brown <david.brown@hesbynett.no> - 2023-09-21 20:10 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-21 18:39 +0000
                Re: Thread-safe initialization of static objects David Brown <david.brown@hesbynett.no> - 2023-09-22 12:35 +0200
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-21 14:44 -0700
                Re: Thread-safe initialization of static objects David Brown <david.brown@hesbynett.no> - 2023-09-22 13:05 +0200
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-22 04:50 -0700
                Re: Thread-safe initialization of static objects David Brown <david.brown@hesbynett.no> - 2023-09-22 17:01 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-21 11:41 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-21 14:37 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-21 11:43 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-21 11:40 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-21 14:34 +0200
                Re: Thread-safe initialization of static objects scott@slp53.sl.home (Scott Lurndal) - 2023-09-21 14:56 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-21 17:04 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-21 11:56 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-21 11:38 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 04:30 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-22 10:37 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-21 22:21 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 04:31 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-22 10:39 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-22 22:15 -0400
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-22 20:22 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 12:21 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-17 15:47 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-18 07:07 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-18 17:34 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-18 19:43 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 12:23 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 12:22 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 05:11 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 22:02 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-21 22:50 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 06:41 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-22 05:15 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 08:52 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-22 10:30 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 19:35 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-22 18:14 +0000
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-22 03:03 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-22 22:23 -0400
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-17 19:49 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-18 07:16 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-18 17:53 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-18 20:08 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-18 18:15 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 12:26 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 12:25 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-17 13:02 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-16 16:34 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 05:57 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-17 10:46 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 18:02 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-17 13:40 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 20:04 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-17 14:26 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 20:32 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-17 14:35 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 20:46 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-17 11:43 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-17 11:27 -0700
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-17 18:49 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 20:51 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-17 11:53 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 20:59 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-17 13:23 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-18 07:09 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 12:38 -0700
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-17 19:22 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 12:39 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-17 15:50 -0400
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-17 13:37 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 20:06 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-17 11:27 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 20:43 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-17 11:48 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-17 15:41 -0400
                Re: Thread-safe initialization of static objects Paavo Helde <eesnimi@osa.pri.ee> - 2023-09-18 00:29 +0300
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-18 07:18 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-18 08:13 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-18 14:37 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-18 21:04 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 05:14 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 22:06 -0700
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-18 18:07 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-18 20:14 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-18 19:42 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 05:16 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-19 04:05 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 22:08 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 22:11 -0700
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-19 05:50 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 23:19 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 23:20 -0700
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-19 07:59 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 10:49 +0200
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 10:47 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-19 16:53 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 19:53 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-19 12:17 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-20 05:36 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-19 21:08 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-20 05:37 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-20 03:52 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-19 21:03 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-20 12:36 -0700
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-20 21:09 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-20 14:15 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-21 05:46 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-20 21:25 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-21 09:51 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-21 11:34 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 04:32 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-21 21:18 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 04:33 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 12:56 -0700
                Re: Thread-safe initialization of static objects scott@slp53.sl.home (Scott Lurndal) - 2023-09-18 14:59 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-18 17:19 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 12:57 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 12:49 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-17 14:37 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-17 20:49 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-17 11:52 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-17 15:43 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-18 07:18 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-18 08:11 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-18 14:45 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 13:01 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 13:01 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-17 16:11 -0400
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-17 16:01 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-18 07:20 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 12:48 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-18 20:30 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 05:17 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-18 22:14 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-19 10:50 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-21 11:29 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-20 20:42 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-21 09:49 +0200
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-21 22:58 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 06:44 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-22 05:34 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 08:54 +0200
                Re: Thread-safe initialization of static objects scott@slp53.sl.home (Scott Lurndal) - 2023-09-22 17:56 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-22 20:12 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-22 18:38 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-23 06:41 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-22 22:59 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-23 08:34 +0200
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-23 08:35 +0200
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-23 10:44 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-23 11:20 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-23 14:23 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-23 11:38 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-23 11:53 -0700
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-24 02:22 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-23 19:59 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-23 20:08 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-24 10:08 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-24 07:15 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-24 13:33 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-24 08:01 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-24 14:10 +0200
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-24 12:47 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-25 01:10 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-24 21:15 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-25 10:00 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-25 07:15 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-25 14:43 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-25 19:29 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-26 06:36 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-26 04:52 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-26 11:11 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-26 07:23 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-26 14:36 +0200
                Re: Thread-safe initialization of static objects scott@slp53.sl.home (Scott Lurndal) - 2023-09-26 15:23 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-26 17:31 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-26 13:02 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-26 18:38 -0400
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-26 13:04 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-26 07:23 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-26 14:37 +0200
                Re: Thread-safe initialization of static objects scott@slp53.sl.home (Scott Lurndal) - 2023-09-26 15:24 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-26 17:33 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-26 13:07 -0700
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-09-26 18:40 -0400
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-28 21:46 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-29 14:02 +0200
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-29 23:57 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-30 08:07 +0200
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-30 14:06 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-10-01 07:00 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-10-01 13:18 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-10-01 21:03 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-10-01 15:45 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-10-02 05:50 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-10-02 07:56 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-10-02 14:00 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-10-02 08:04 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-10-02 15:44 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-10-02 12:18 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-10-01 19:19 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-10-02 05:51 +0200
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-10-02 22:24 -0400
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-10-02 19:39 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-10-02 23:30 -0400
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-10-02 21:24 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-10-03 06:19 +0200
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-10-04 22:03 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-10-05 04:40 +0200
                Re: Thread-safe initialization of static objects Richard Damon <Richard@Damon-Family.org> - 2023-10-05 07:56 -0400
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-10-05 12:19 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-10-05 21:29 -0400
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-10-08 06:54 +0200
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-10-13 22:51 -0400
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-30 19:07 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-30 12:30 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-30 12:32 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-30 12:49 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-30 13:24 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-30 21:09 -0400
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-30 20:52 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-10-01 07:01 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-10-01 16:41 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-10-01 19:00 +0200
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-10-01 17:04 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-26 13:06 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-27 14:48 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-27 15:11 -0700
                Re: Thread-safe initialization of static objects Pavel <pauldontspamtolk@removeyourself.dontspam.yahoo> - 2023-09-28 20:56 -0400
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-27 15:15 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-27 15:25 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-27 15:56 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-27 15:20 -0700
                Re: Thread-safe initialization of static objects scott@slp53.sl.home (Scott Lurndal) - 2023-09-27 22:37 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-27 15:49 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-27 15:59 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-27 16:06 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-27 16:10 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-27 16:15 -0700
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-27 22:27 +0000
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-27 15:57 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-27 16:38 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-28 04:07 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-28 13:24 +0200
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-28 04:46 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-28 14:46 +0200
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-28 06:09 -0700
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-28 14:34 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-29 14:03 +0200
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-29 05:07 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-29 14:15 +0200
                Re: Thread-safe initialization of static objects Michael S <already5chosen@yahoo.com> - 2023-09-29 05:37 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-29 16:35 +0200
                Re: Thread-safe initialization of static objects Tim Rentsch <tr.17687@z991.linuxsc.com> - 2023-09-29 08:03 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-29 17:08 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-29 11:44 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-29 20:54 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-29 11:57 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-29 12:00 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-29 21:09 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-29 12:26 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-29 12:27 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-29 21:31 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-29 12:34 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-29 21:37 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-29 12:41 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-29 21:30 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-29 12:36 -0700
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-29 12:38 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-29 21:43 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-29 13:09 -0700
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-29 22:14 +0200
                Re: Thread-safe initialization of static objects "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2023-09-29 13:28 -0700
                Re: Thread-safe initialization of static objects Kaz Kylheku <864-117-4973@kylheku.com> - 2023-09-29 20:44 +0000
                Re: Thread-safe initialization of static objects Bonita Montero <Bonita.Montero@gmail.com> - 2023-09-30 11:15 +0200

(Thread has 665 articles, showing 500 — browse group in flat view)


csiph-web