diff options
author | chai <chaifix@163.com> | 2018-08-08 23:24:00 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-08-08 23:24:00 +0800 |
commit | 847e5910abcc2431ad284ef843d482807349682d (patch) | |
tree | 41deb02688a59cf14241dbcd0d732df9783502fa /build/03Thread/main.cpp | |
parent | 4afb418bf779400005f5452776ec5e4df1d2eda6 (diff) | |
parent | 1019479c017bc42fa48bb5e825d26b5f70b00787 (diff) |
Merge branch 'master' of warmcat.org:/home/git-repo/libjin
Diffstat (limited to 'build/03Thread/main.cpp')
-rw-r--r-- | build/03Thread/main.cpp | 154 |
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 |