Ejemplo n.º 1
0
void *AtomicTestCase::MyThread::Entry()
{
    wxInt32 negativeValuesSeen = 0;

    for ( wxInt32 i = 0; i < ITERATIONS_NUM; ++i )
    {
        switch ( m_testType )
        {
            case AtomicTestCase::IncAndDecMixed:
                wxAtomicInc(m_operateOn);
                wxAtomicDec(m_operateOn);

                if (m_operateOn < 0)
                    ++negativeValuesSeen;
                break;

            case AtomicTestCase::IncOnly:
                wxAtomicInc(m_operateOn);
                break;

            case AtomicTestCase::DecOnly:
                wxAtomicDec(m_operateOn);
                break;
        }
    }

    return wxUIntToPtr(negativeValuesSeen);
}
Ejemplo n.º 2
0
void AtomicTestCase::TestDecReturn()
{
    wxAtomicInt i(0);
    wxAtomicInc(i);
    wxAtomicInc(i);
    CPPUNIT_ASSERT( i == 2 );

    CPPUNIT_ASSERT( wxAtomicDec(i) > 0 );
    CPPUNIT_ASSERT( wxAtomicDec(i) == 0 );
}
Ejemplo n.º 3
0
void AtomicTestCase::TestNoThread()
{
    wxAtomicInt int1 = 0,
                int2 = 0;

    for ( wxInt32 i = 0; i < ITERATIONS_NUM; ++i )
    {
        wxAtomicInc(int1);
        wxAtomicDec(int2);
    }

    CPPUNIT_ASSERT( int1 == ITERATIONS_NUM );
    CPPUNIT_ASSERT( int2 == -ITERATIONS_NUM );
}
Ejemplo n.º 4
0
FSArchiveHandler::~FSArchiveHandler() {
	if (!wxAtomicDec(archive->ref))
		delete archive;
}