O, właśnie. Pomyliłem się wcześniej z thread_affinity_mask w opisie - gdy wystąpi błąd zwraca 0, nie -1 :) już poprawiłem posty.
Mu chodziło raczej o coś takiego:
GML
global.thread = thread_create( "jakis kod GML", 1 );
switch ( thread_num_of_processors() ) {
case 2: thread_affinity_mask( global.thread, 2 ); break; // maska na drugi rdzeń
case 3: thread_affinity_mask( global.thread, 4 ); break; // maska na trzeci rdzeń
case 4: thread_affinity_mask( global.thread, 8 ); break; // maska na czwarty rdzeń
}
// W innym wypadku maska nie będzie ustawiona
// lub
if ( thread_num_of_processors() > 1 )
thread_affinity_mask( global.thread, 2 ); // maska na drugi rdzeń
// można by zrobić też tak
thread_affinity_mask( global.thread, 1 + ( thread_num_of_processors() > 1 ) ); // maska na drugi rdzeń ( jeśli istnieje takowy )
// czy tam
thread_affinity_mask( global.thread, 1 << thread_num_of_processors() - 1 ); // maska na ostatni rdzeń