aboutsummaryrefslogtreecommitdiff
path: root/build/03Thread/main.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-08-08 23:24:00 +0800
committerchai <chaifix@163.com>2018-08-08 23:24:00 +0800
commit847e5910abcc2431ad284ef843d482807349682d (patch)
tree41deb02688a59cf14241dbcd0d732df9783502fa /build/03Thread/main.cpp
parent4afb418bf779400005f5452776ec5e4df1d2eda6 (diff)
parent1019479c017bc42fa48bb5e825d26b5f70b00787 (diff)
Merge branch 'master' of warmcat.org:/home/git-repo/libjin
Diffstat (limited to 'build/03Thread/main.cpp')
-rw-r--r--build/03Thread/main.cpp154
1 files changed, 0 insertions, 154 deletions
diff --git a/build/03Thread/main.cpp b/build/03Thread/main.cpp
deleted file mode 100644
index ed12172..0000000
--- a/build/03Thread/main.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-//#include <SDL2/SDL.h>
-//#include <SDL2/SDL_thread.h>
-//#include <iostream>
-//#include <sstream>
-//#include <stdexcept>
-//
-//class SdlMutex
-//{
-//public:
-// SdlMutex()
-// {
-// mutex = SDL_CreateMutex();
-// if (!mutex) throw std::runtime_error("SDL_CreateMutex == NULL");
-// }
-//
-// ~SdlMutex()
-// {
-// SDL_DestroyMutex(mutex);
-// }
-//
-// void lock()
-// {
-// if (SDL_mutexP(mutex) == -1) throw std::runtime_error("SDL_mutexP == -1");
-// // Note:
-// // -1 does not mean it was already locked - it means there was an error in locking -
-// // if it was locked it will just block - see SDL_mutexP(3)
-// }
-//
-// void unlock()
-// {
-// if (SDL_mutexV(mutex) == -1) throw std::runtime_error("SDL_mutexV == -1");
-// }
-//
-// SDL_mutex* underlying()
-// {
-// return mutex;
-// }
-//private:
-// SDL_mutex* mutex;
-//};
-//
-//class SdlScopedLock
-//{
-//public:
-// SdlScopedLock(SdlMutex& mutex)
-// :
-// mutex(mutex)
-// {
-// mutex.lock();
-// }
-// ~SdlScopedLock()
-// {
-// try
-// {
-// this->unlock();
-// }
-// catch (const std::exception& e)
-// {
-// // Destructors should never throw ...
-// std::cerr << "SdlScopedLock::~SdlScopedLock - caught : " << e.what() << std::endl;
-// }
-// }
-// void unlock()
-// {
-// mutex.unlock();
-// }
-//private:
-// SdlMutex& mutex;
-//};
-//
-//class ThreadData
-//{
-//public:
-// ThreadData()
-// :
-// dataReady(false),
-// done(false)
-// {
-// condition = SDL_CreateCond();
-// }
-//
-// ~ThreadData()
-// {
-// SDL_DestroyCond(condition);
-// }
-//
-// // Using stringstream so I can just shift on integers...
-// std::stringstream data;
-// bool dataReady;
-// bool done;
-// SdlMutex mutex;
-// SDL_cond* condition;
-//};
-//
-//int threadFunction(void* data)
-//{
-// try
-// {
-// ThreadData* threadData = static_cast< ThreadData* >(data);
-//
-// for (size_t i = 0; i < 100; i++)
-// {
-// {
-// SdlScopedLock lock(threadData->mutex);
-// // Everything in this scope is now syncronized with the mutex
-// if (i != 0) threadData->data << ", ";
-// threadData->data << i;
-// threadData->dataReady = true;
-// } // threadData->mutex is automatically unlocked here
-// // Its important to note that condition should be signaled after mutex is unlocked
-// if (SDL_CondSignal(threadData->condition) == -1) throw std::runtime_error("Failed to signal");
-// }
-// {
-// SdlScopedLock lock(threadData->mutex);
-// threadData->done = true;
-// }
-// if (SDL_CondSignal(threadData->condition) == -1) throw std::runtime_error("Failed to signal");
-// return 0;
-// }
-// catch (const std::exception& e)
-// {
-// std::cerr << "Caught : " << e.what() << std::endl;
-// return 1;
-// }
-//}
-//
-//int main(int argc, char* argv[])
-//{
-// ThreadData threadData;
-// SDL_Thread* thread = SDL_CreateThread(threadFunction, "", &threadData);
-//
-// while (true)
-// {
-// SdlScopedLock lock(threadData.mutex);
-// while (threadData.dataReady == false && threadData.done == false)
-// {
-// // NOTE: must call condition wait with mutex already locked
-// if (SDL_CondWait(threadData.condition, threadData.mutex.underlying()) == -1) throw std::runtime_error("Failed to wait");
-// }
-// // once dataReady == true or threadData.done == true we get here
-// std::cout << "Got data = " << threadData.data.str() << std::endl;
-// threadData.data.str("");
-// threadData.dataReady = false;
-// if (threadData.done)
-// {
-// std::cout << "child done - ending" << std::endl;
-// break;
-// }
-// }
-//
-// int status = 99;
-// SDL_WaitThread(thread, &status);
-// std::cerr << "Thread completed with : " << status << std::endl;
-//} \ No newline at end of file