none worked :(
neither the boost::this_thread::get_id() is useable in a switch statement , nor the suggested use of boost::thread* or boost::container::vector<thread> .

before i give the faulty source code of mine , i need to answer what exactly im after .
see some of my friends are trying to learn boost , specially to work with its threading capabilities to use it in a project of theirs . they have no idea what boost is , or how these stuff work , so its on me , because unlike them i had a little experience with boost in a long past .
so one of them asked me a question on a scenario where there is a function , which is reapeately creating new threads , and each thread execute a function with a unique request message ,
in the aforementioned function ( dispatcher lets say ) , he wants to see if he as a ability to distinguish between the coming threads , and altering them at any given moment , be it terminating them , or simply getting its Id for further management , again by management i mean , in other functions ( or objects methods ) the thread can be specified by its ID , for being recognized for being surveyed , or again being terminated or moved .


and i also have another question , how do i send an argument to afunction with is goingto be used as packaged_task? it seems , i can only make packaged_task objects out of strucs! or classes! seems i cant even use functions at all! is it right ? i would appreciate an explanation on this matter too please .

and now here is the source :
i am on windows 7 sp1 - 32bit - Visual studio 2010 .
#include <boost/signal.hpp>
#include <iostream>
#include <boost/thread.hpp>
using namespace std;

boost::thread* threadarray[3];

int t(int x)
{
    switch(boost::this_thread::get_id())
    {
    case threadarray[0].get_id():
        cout<<"thread 1";
        break;
        case threadarray[1].get_id():
        //DISPOSE THIS THREAD or CHANGE OWNERSHITP, OR  GET ANOTHER JOB TO IT , OR CHECK IF IT WAS SUCCESSFUL OR NOT
        cout<<"thread 2";
            break;
        case threadarray[3].get_id():
        cout<<"thread 3";
        break;
        default:
            cout<<"default";
    }
    return 0;
}

int main()
{
    boost::thread t1(t,5), t2(t,6),t3(t,7);
   
    threadarray[0] = t1.move();
    threadarray[1] = t2.move();
    threadarray[2] = t3.move();

    for(int i = 0; i <3;i++)
    {
        threadarray[i].join();
    }
    system("pause");
}

and these are the errors:
Error    1    error C2450: switch expression of type 'boost::thread::id' is illegal    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    61    1    Boost Example
Error    2    error C2228: left of '.get_id' must have class/struct/union    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    63    1    Boost Example
Error    3    error C2046: illegal case    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    63    1    Boost Example
Error    4    error C2228: left of '.get_id' must have class/struct/union    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    66    1    Boost Example
Error    5    error C2046: illegal case    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    66    1    Boost Example
Error    6    error C2228: left of '.get_id' must have class/struct/union    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    70    1    Boost Example
Error    7    error C2046: illegal case    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    70    1    Boost Example
Warning    8    warning C4065: switch statement contains 'default' but no 'case' labels    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    75    1    Boost Example
Error    9    error C2440: '=' : cannot convert from 'boost::thread' to 'boost::thread *'    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    83    1    Boost Example
Error    10    error C2440: '=' : cannot convert from 'boost::thread' to 'boost::thread *'    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    84    1    Boost Example
Error    11    error C2440: '=' : cannot convert from 'boost::thread' to 'boost::thread *'    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    85    1    Boost Example
Error    12    error C2228: left of '.join' must have class/struct/union    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    89    1    Boost Example
    13    IntelliSense: expression must have integral or enum type    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    11    9    Boost Example
    14    IntelliSense: expression must have class type    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    13    7    Boost Example
    15    IntelliSense: expression must have class type    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    16    8    Boost Example
    16    IntelliSense: expression must have class type    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    20    8    Boost Example
    17    IntelliSense: no suitable conversion function from "boost::thread" to "boost::thread *" exists    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    33    19    Boost Example
    18    IntelliSense: no suitable conversion function from "boost::thread" to "boost::thread *" exists    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    34    19    Boost Example
    19    IntelliSense: no suitable conversion function from "boost::thread" to "boost::thread *" exists    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    35    19    Boost Example
    20    IntelliSense: expression must have class type    c:\users\master\documents\visual studio 2010\projects\boost example\boost example\mb.cpp    39    3    Boost Example