Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
threadpool01
Language:
Ada
Assembly
Bash
C#
C++ (gcc)
C++ (clang)
C++ (vc++)
C (gcc)
C (clang)
C (vc)
Client Side
Clojure
Common Lisp
D
Elixir
Erlang
F#
Fortran
Go
Haskell
Java
Javascript
Kotlin
Lua
MySql
Node.js
Ocaml
Octave
Objective-C
Oracle
Pascal
Perl
Php
PostgreSQL
Prolog
Python
Python 3
R
Rust
Ruby
Scala
Scheme
Sql Server
Swift
Tcl
Visual Basic
Layout:
Vertical
Horizontal
//Title of this code #include <iostream> #include <thread> #include <list> #include <mutex> using namespace std; class Job { public: virtual void work() = 0; }; class ThreadPool { int numThreads; list<thread*> workingThreads; list<thread*> freeThreads; queue<Job*> jobs; mutex jobsLock; public: ThreadPool(int threads): numThreads(threads) {} ~ThreadPool() {} void initialize() { for (int i = 0; i < numThreads; ++i) { freeThreads.push_back(new thread()); } } void addJob(Job* j) { jobsLock.lock(); jobs.push(j); jobsLock.unlock(); } void jobWrapper() private: Job* getJob() { Job* j = NULL; jobsLock.lock(); if (!jobs.empty()) { j = jobs.front(); jobs.pop(); } jobsLock.unlock(); return j; } }; int main() { std::cout << "Hello, world!\n"; }
g++
Show compiler warnings
[
+
] Compiler args
[
+
]
Show input
Compilation time: 0.53 sec, absolute running time: 0.04 sec, cpu time: 0 sec, memory peak: 3 Mb, absolute service time: 0.57 sec
edit mode
|
history
|
discussion
Hello, world!