Implementation of FastICA in multithreading approach
The code is a mess, but I can tell you that it will spin forever right here:

std::thread process_thread(&amp;MainProcess::controller,&amp;p3);


This starts controller running immediately.

void controller()
{
    while(true)
    {
        while(IsPrepare==numberOfThreads)
        {
            std::lock_guard&lt;std::mutex&gt; lk(lock);
            std::cerr&lt;&lt;"Now controller is checking fastICA is converged or not "&lt;&lt;std::endl;
            std::fill(checkedEvent.begin(), checkedEvent.end(), 0);
            IsPrepare=0;
            data_prepare.notify_all();
        }
    }
}


IsPrepare is 0, and numberOfThreads is 10, and there's no synchronization to worry about here (no locks, no atomics), so we can definitely say that 0 == 10 is invariably false. Thus controller reduces to

void controller()
{
    while(true)
    {
        while(false) {}
    }
}


Okay, so that thread won't be doing anything anytime soon.
And with that code out of the way, the rest is pretty much irrelevant; it looks to me as if it will end up blocking forever, since there's nobody left to notify the condition variable.

Your problem might be suited to a TBB flowgraph; consider using TBB instead of hand-rolling your own stuff.