Форум программистов, компьютерный форум, киберфорум
Наши страницы

Boost C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
NeonLost
Пес войны
76 / 87 / 3
Регистрация: 23.02.2012
Сообщений: 653
#1

Многопоточность, мьютексы, асинхронный get запрос - Boost C++

30.01.2013, 12:31. Просмотров 1128. Ответов 3
Метки нет (Все метки)

имею код, который средствами буст запускает несколько потоков...вопрос, почему мьютекс не лочит общие ресурсы?..)
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
void StartThread(boost::mutex& mutex)
{
    boost::lock_guard<boost::mutex> lock(mutex);
    //mutexLock.lock();
    vector<string> uniq;
    static const boost::regex e("[a-zA-Z0-9_\\-\\.]+@([a-z]){2,5}+.ru");
    boost::smatch xResults;
    string text; 
    const long int min=1, max=10000000;
    GetHTMLText("http://***************/question/"+to_string(GetRandomNumbers(min, max)), &text);
    boost::sregex_iterator xIt(text.begin(), text.end(), e);
    boost::sregex_iterator xInvalidIt;
    while(xIt != xInvalidIt) 
    {
        string qwe=xIt->str();
        uniq.push_back(qwe);
        *xIt++;
    }
    sort( uniq.begin(), uniq.end() );
    uniq.erase( unique( uniq.begin(), uniq.end() ), uniq.end() );std::unique (uniq.begin(), uniq.end());//удаляем дубликаты
    ofstream book_file("mails.txt"); 
    for(auto it=uniq.begin(); it!=uniq.end(); ++it)
    {
        cout<<*it<<endl;
        book_file << *it<< endl; 
    }
    book_file.close();
    //mutexLock.unlock();
}
int main()
{
    boost::mutex io_mutex;
    boost::thread_group group;
    for (int i = 0; i < 2; ++i) group.create_thread(boost::bind(&StartThread, boost::ref(io_mutex)));
    group.join_all();
    /*std::thread th1(StartThread);
    std::thread th2(StartThread);
    th1.join();
    th2.join();*/
    getchar();
    return 0;
}
если убрать буст, и раскомментить потоки и мьютексы из std, то все работает...)
может в std тоже есть группа потоков?..)
и можно ли сделать get(используется РОСО) запрос не общим ресурсом?..нужно, чтобы все потоки могли скачивать одновременно, для пущей скорости...)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2013, 12:31
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Многопоточность, мьютексы, асинхронный get запрос (Boost C++):

Асинхронный запрос - PHP
&lt;form action=&quot;reg.php&quot; method=&quot;post&quot;&gt; &lt;fieldset&gt; &lt;legend&gt;Товары фирмы:&lt;/legend&gt; &lt;input type=&quot;hidden&quot; name=&quot;name&quot;...

Асинхронный запрос. Помогите... - Базы данных
Задача такая: Большой набор записей (&gt;1000)должен отображаться в Gride (VSFlexGrid), но не весь, а постепенно, т.е. загрузилась форма...

Как сделать асинхронный запрос? - C# MVC
Проще говоря ajax. Я начинающий web программист и с эти ещё не сталкивался. У меня есть таблица с ссылками. Типа такими: &lt;a...

Асинхронный POST запрос по таймеру - C# ASP.NET
Доброго времени суток.

HttpWebRequest асинхронный post запрос - C#
Мне нужно создать post запрос и послать его асинхронно делаю это вот так: HttpWebRequest request =...

Покажите асинхронный запрос ajax - JavaScript
хотя бы на одном &lt;input&gt; хочу регистрацию сделать на ajax, а не могу его осилить...(

3
Avazart
Эксперт С++
7585 / 5570 / 330
Регистрация: 10.12.2010
Сообщений: 24,992
Записей в блоге: 17
30.01.2013, 22:58 #2
Вообще то судя по коду должен лочить, но вот походу от того что он лочит делает код малополезным ибо потоки будут выполнятся по очереди - тобишь выигрыша ноль.
0
NeonLost
Пес войны
76 / 87 / 3
Регистрация: 23.02.2012
Сообщений: 653
30.01.2013, 23:35  [ТС] #3
Цитата Сообщение от Avazart Посмотреть сообщение
Вообще то судя по коду должен лочить, но вот походу от того что он лочит делает код малополезным ибо потоки будут выполнятся по очереди - тобишь выигрыша ноль.
есть же многопоточные парсеры, почему я не могу запустить несколько get запросов асинхронно?
0
Avazart
Эксперт С++
7585 / 5570 / 330
Регистрация: 10.12.2010
Сообщений: 24,992
Записей в блоге: 17
30.01.2013, 23:37 #4
Ну так вы как только запустили поток сразу блочите ресурс, как другие потоки до него добирутся ?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2013, 23:37
Привет! Вот еще темы с ответами:

Как выполнить асинхронный запрос? - Visual Basic
Задача такая: Большой набор записей (&gt;1000)должен отображаться в Gride (VSFlexGrid), но не весь, а постепенно, т.е. загрузилась форма...

Асинхронный запрос XmlDocument и пополнение бд из кода - C# ASP.NET
Добрый день, у меня такое задание: сделать сайт, который тянет xml документ (ну типа этого...

Асинхронный запрос к БД без нарушения MVC - C#
Добрый день, прошу помочь правильно решить задачу: При нажатии кнопки заполнить комбобокс из БД Вопрос: как вынести в отдельный...

Не получается асинхронный запрос в ASP.net MVC - jQuery
Пытаюсь асинхронно вызвать екшн Get в контроллере Home, который вовзращает тип string. Вроде бы всё делаю правильно, но ничего не работает ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru