|
- /*
- * 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;
- }
|