'How to draw in Cinder concurrently?
I'm trying to launch 4 standard C++ threads, each drawing a line, but an abort() gets called in runtime. I try to adhere to this example, pass over the GL drawing context, use a mutex for thread synchronization. What do I do wrong?
void drawTest(gl::ContextRef _context, vec2 p1, vec2 p2, mutex& latch)
{
ci::ThreadSetup threadSetup;
latch.lock();
_context->makeCurrent();
gl::drawLine(p1, p2);
latch.unlock();
}
void Func()
{
vector<thread> threads;
mutex myMutex;
gl::ContextRef backgroundCtx = gl::Context::create(gl::context());
threads.push_back(thread(drawTest, backgroundCtx, vec2(100, 344), vec2(150, 344), std::ref(myMutex)));
threads.push_back(thread(drawTest, backgroundCtx, vec2(400, 850), vec2(730, 200), std::ref(myMutex)));
threads.push_back(thread(drawTest, backgroundCtx, vec2(302, 540), vec2(150, 905), std::ref(myMutex)));
threads.push_back(thread(drawTest, backgroundCtx, vec2(222, 930), vec2(50, 777), std::ref(myMutex)));
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
