crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в C++, многопоточность, linux
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
igor_bogomolov Дата 25.11.2010, 9:56
 
Цитата(vankleef @ 25.11.2010, 1:18) *
При выводе результата получается следующее: сначала выводится результат одного потока, потом-второго, а не вперемешку.
Так ты сделай не 100 повторений, а 100000 и увидишь, что они вперемешку.
Iron Bug Дата 25.11.2010, 7:41
  любое условие в функцию потоков, чтобы они фактически стартовали одновременно. это может быть ожидание какого-нибудь события, счётчик или семафор. неважно.
vankleef Дата 25.11.2010, 1:18
  Имеется простая программа-пример:

#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 там вывод нормальный-вперемешку.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.11.2021, 9:44