|  | /*
 * Carla Tests
 * Copyright (C) 2013 Filipe Coelho <falktx@falktx.com>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License, or any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * For a full copy of the GNU General Public License see the GPL.txt file
 */
#include "CarlaThread.hpp"
class MyThread : public CarlaThread
{
public:
    MyThread(bool wait)
        : blockWait(wait)
    {
    }
protected:
    void run()
    {
        printf("RUN(%i)\n", blockWait);
        if (blockWait)
        {
            for (int i=0; i < 100; i++)
            {
                carla_msleep(50);
                printf("RUN(%i) - BLOCKING\n", blockWait);
            }
        }
        printf("RUN(%i) - FINISHED\n", blockWait);
    }
private:
    bool blockWait;
};
int main()
{
    MyThread t1(false);
    MyThread t2(true);
    MyThread t3(true);
    MyThread t4(true);
    MyThread t5(false);
    t1.start();
    t2.start();
    //t3.start();
    //t3.waitForStarted();
    //t3.stop();
    t1.waitForStarted();
    t2.waitForStarted();
    printf("THREADS STARTED\n");
    // test if threds keep working
    carla_sleep(1);
    printf("THREAD1 STOPPING...\n");
    if (t1.isRunning() && ! t1.stop(500))
    {
       printf("THREAD1 FAILED, TERMINATE\n");
       t1.terminate();
    }
    printf("THREAD2 STOPPING...\n");
    if (t2.isRunning() && ! t2.stop(500))
    {
       printf("THREAD2 FAILED, TERMINATE\n");
       t2.terminate();
    }
    return 0;
}
 |