Форум программистов, компьютерный форум CyberForum.ru

rand() в потоке - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить значение выражения http://www.cyberforum.ru/cpp-beginners/thread681718.html
Составить программу вычислений значений функции x2, при -2 <= x <=2 y = 4, в противном случае только в С++, помогите, пожалуйста
C++ Все компилируется, ничего не работает, cout не выводит текст Приветствую! Проблема заключается в следующем: Ни разу не срабатывает строка из первого же цикла. cout << "Fibonacci_int(" << i << ") = " << Fibonacci_int(i) << endl; Также не срабатывают другие циклы. Сама программа компилируется, запрашивает число у пользователя, затем завершает свою работу. Помогите разобраться, пожалуйста.Заранее благодарна. П.С. прикрепляю архив готового проекта. ... http://www.cyberforum.ru/cpp-beginners/thread681715.html
C++ Как считать матрицу из файла в двумерный вектор
Доброго времени суток, начал писать шифр Скитала И столкнулся с такой проблемой, но могу считать матриwe размером 4х4 в двумерный вектор из файла! подскажите как реализовать! Заранее спасибо!
Программа для вывода на экран содержимого изменяющегося файла C++
Некая программа периодически изменяет содержимое файла. Для простоты пусть этот файл будет всегда иметь размер 400 байт и содержать в себе 25 строк по 80 символов каждый. Поэтому его содержимое можно напрямую копировать в консоль. Символы - только ASCII7. Вот как примерно такой файл выглядит: A = 1...(куча пробелов, чтобы довести строку до 78 символов)...\n\r B = 2...пробелы...\n\r 78...
C++ Нужно количество цифр с рекурсивной функцией http://www.cyberforum.ru/cpp-beginners/thread681703.html
Не могу найти ошибку. Надо найти кол-во цифр введённого числа с помощью рекурсивной функции. #include <iostream> using namespace std; int sum=0; int quantity (int); int quantity (int n) { if(n!=0) { sum++; return quantity (n/=10); } else sum;
C++ Константный указатель Почему в данном примере константный указатель может быть использован для вывода элементов вектора? #include <iostream> #include <vector> int main() { std::vector<int> v; std::vector<int>::pointer p; std::vector<int>::const_pointer cp; v.reserve(10); // Резервируем минимальный размер подробнее

Показать сообщение отдельно
san92der
14 / 14 / 3
Регистрация: 27.10.2012
Сообщений: 108
27.10.2012, 15:40     rand() в потоке
Здравствуйте, форумчане!
Столкнулся с такой проблемой. Есть массив. Надо создать поток для заполнения массива случайными числами в случайном месте. Делаю это так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "stdafx.h"
#include <iostream>
#include <thread>
#include <mutex>
#include <vector>
 
using namespace std;
 
struct cMass 
{
    mutex m;
    vector<int> mass;
 
    cMass():{
        for(int i=0; i<10; i++)
        mass.push_back(rand());
    }
 
    void push(int a){
        lock_guard<mutex> guard(m);
        mass.insert(mass.begin()+rand()%(mass.size()-1), rand());
            
    }
 
    void out(){
        lock_guard<mutex> guard(m);
        for(int i=0; i<mass.size(); i++)
              cout<<mass[i]<<' ';
        cout<<endl<<endl;
    }
 
 
};
 
int main()
{
    cMass cm;
     
    std::vector<std::thread> threads;
        for(int i = 0; i < 20; ++i) {
                   threads.push_back(std::thread([&cm](){counter.push();}));
                    threads.push_back(std::thread([&cm](){counter.out();}));
    }
     
    for(auto& thread : threads){
                thread.join();
    }
     
    int a; cin>>a;   
    return 0;
}
Но при заполнении массив заполняется каждый раз одним и тем же числом, хотя вставляет в разные места. Есть куча тем, где описывается, почему в разных потоках rand() вставляет одно и то же число, но по этой теме ничего не нашел. Или я вообще потоками не правильно пользуюсь? Помогите пожалуйста!

Добавлено через 51 минуту
srand() не помогает
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru