by paul424 » 11 Apr 2014, 16:16
Could someone have a look at mine emacs identation setttings : here's example :
http://pastebin.com/CaGJf0y7- {l Code}: {l Select All Code}
#include <iostream>
#include <thread>
#include <mutex>
#include <memory>
#include <atomic>
#include <functional>
#include <boost/lockfree/queue.hpp>
#include <array>
// #include "lockfreequeue.h"
using std::endl; using std::cerr;
using std::cout ; using std::cin;
using std::mutex; using std::atomic;
using std::array; using std::function;
using std::pair; using std::thread;
template <int NN> using guardedArray = array<pair<atomic<uint8_t>,function<void()>>, NN> ;
template <typename T> using lockfreequeue = boost::lockfree::queue<T,boost::lockfree::capacity<1000>>;
mutex mm;
class Functor{
int myNN;
public:
Functor(int nn):myNN(nn){};
Functor(function<void()> ff) : myff(ff){};
function<void()> myff;
Functor(const Functor&) = default;
Functor operator=(const Functor&) ;
~Functor() = default;
void operator()(){
myff();
}
};
template <int NN > class GuardedArray{
bool endFlag;
guardedArray<NN> myGuardedArray;
public:
GuardedArray():garbageCollectorThread(&GuardedArray::garbageCollectorFunction,this),endFlag(false){ };
~GuardedArray(){ endFlag = true; garbageCollectorThread.join(); };
void markDone(int ii ){ myGuardedArray[ii].first.store(2) ;};
int insertObject(function<void()> ff){
int kk ;
uint8_t empty ;
do{
kk = rand () % NN;
empty = myGuardedArray[kk].first.load();
cout << "spining ... " << endl;
}while(!((empty == 0 ) && (atomic_compare_exchange_weak(&myGuardedArray[kk].first,&empty,uint8_t(1)))));
myGuardedArray[kk].second = ff;
return kk;
};
function<void()> getIndex(int ii){return myGuardedArray[ii].second ; };
thread garbageCollectorThread;
void garbageCollectorFunction(){
while(!endFlag){
for (int ii = 0 ; ii < NN ; ++ii){
if(myGuardedArray[ii].first == 2){
myGuardedArray[ii].second = function<void()>();
myGuardedArray[ii].first.store(0);
}
}
}
};
};
template <int NN > class ThreadPool{
private:
thread tt[NN];
GuardedArray<1000> myGA;
bool endFlag;
public:
ThreadPool():endFlag(false){
for(int ii = 0 ; ii < NN ; ++ii){
thread localThread(&ThreadPool<NN>:: threadLoop, this);
tt[ii].swap(localThread);
}
};
void bookTask(function<void()> ff){
int ii = myGA.insertObject(ff);
mySync.push(ii);
};
bool demandedAccess[NN];
int waitingProcess;
~ThreadPool() {endFlag = true; for (int ii = 0 ; ii < NN ; ii++ ){ tt[ii].join();} };
int myWrapper();
void threadLoop();
lockfreequeue<int> mySync;
};
template <int NN> void ThreadPool<NN>::threadLoop(){
thread::id kk = std::this_thread::get_id();
function<void()> fun ;
int ff;
while(!endFlag){
if(!mySync.empty()){
bool result = mySync.pop(ff);
if(result){
fun = myGA.getIndex(ff);
fun();
myGA.markDone(ff);
}
}
}
}
uint64_t factorial(uint64_t x ) {
if (x == 0 )
return 1;
else return x * factorial(x-1);
}
void print_factorial(int x){
cout << factorial(x) << endl;
}
int main(int argc, char** argv){
ThreadPool<6> tp;
// Functor ff(( [](){ cout <<"a kuku "<<endl; }));
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,15) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,10) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,16) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,15) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,16) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,15) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,15) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,15) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,10) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,16) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,15) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,16) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,15) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,15) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,15) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,10) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,16) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,1) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,1) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,1) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,1) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,1) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,1) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,1) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,1) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,1) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,0) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,1) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,1) );
tp.bookTask(std::bind(print_factorial,7) );
tp.bookTask(std::bind(print_factorial,8) );
tp.bookTask(std::bind(print_factorial,9) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,5) );
tp.bookTask(std::bind(print_factorial,6) );
tp.bookTask(std::bind(print_factorial,3) );
tp.bookTask(std::bind(print_factorial,5) );
// tp.bookTask(print_factorial,5);
// tp.bookTask(print_factorial,5);
// tp.bookTask(print_factorial,5);
// tp.bookTask(print_factorial,5);
// tp.bookTask(print_factorial,5);
std::this_thread::sleep_for(std::chrono::seconds(10));
return 0 ;
}