Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: C++, многопоточность, linux
Форум на CrossPlatform.RU > Разработка > С\С++
vankleef
Имеется простая программа-пример:

#include <iostream>
#include <pthread.h>
#include <semaphore.h>

using namespace std;

void *niggers(void *arg){
    int local=*(int *)arg;    
    for(int i=0;i<100;i++){
        cout<<local<<endl;
    }
}

int main(int argc, char** argv) {
    int n1=1,n2=2;
    pthread_t t1,t2;
    pthread_create(&t1,NULL,niggers,&n1);
    pthread_create(&t2,NULL,niggers,&n2);

    pthread_join(t1,NULL);
    pthread_join(t2,NULL);
    return 0;
}


Компилирую с ключем -lpthread.
При выводе результата получается следующее: сначала выводится результат одного потока, потом-второго, а не вперемешку.

Как можно сделать чтобы один поток дал процессорное время другому?
Компилировал подобный код в уиндовсе с помощью gcc там вывод нормальный-вперемешку.
Iron Bug
любое условие в функцию потоков, чтобы они фактически стартовали одновременно. это может быть ожидание какого-нибудь события, счётчик или семафор. неважно.
igor_bogomolov
Цитата(vankleef @ 25.11.2010, 1:18) *
При выводе результата получается следующее: сначала выводится результат одного потока, потом-второго, а не вперемешку.
Так ты сделай не 100 повторений, а 100000 и увидишь, что они вперемешку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2021 IPS, Inc.