crossplatform.ru

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

Disaron
  опции профиля:
сообщение 17.4.2013, 9:47
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 19.2.2011
Пользователь №: 2420

Спасибо сказали: 0 раз(а)




Репутация:   0  


Начал работать с бустом, и вылезла непонятная мне хрень:
void TaskExecuter::operator()()
{
    string strt;
    {
        stringstream ss;
        ss << string("Started_") << m_id;
        ss >> strt;
    }
    using namespace posix_time;
    for (int i = 0; i < 5; ++i) {
        string str = strt + " " + (to_simple_string(microsec_clock::local_time()) + "\n\r");;
        this_thread::sleep_for(chrono::duration<int, milli>(250));
        m_jobList->addJob(str);
    }
}


Код работает в несколько потоков, и получается, что задержка происходит не на положенные 250мс, а на ровно в два раза больше - 500. Изменение периода ситуации не меняет - все равно в два раза больше. В чем может быть ошибка?
Прикрепленный файл  fgwbst.zip ( 5.97 килобайт ) Кол-во скачиваний: 465
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Disaron
  опции профиля:
сообщение 25.4.2013, 21:01
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 19.2.2011
Пользователь №: 2420

Спасибо сказали: 0 раз(а)




Репутация:   0  


Сегодня терли на конфе в джаббере. Пока сошлись на том, что я попробую собрать на пингвине, но руки не дошли. Возможно это глюк винды, либо неправильная сборка буста. Хотя там тоже у 2 из 3 людей получилось в два раза больше.

Эта функция, как и большинство кода - фикция, в боевом приложении 80% этой ереси не будет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 15.4.2025, 3:23