Форум программистов, компьютерный форум, киберфорум
Комментарии
Войти
Регистрация
Восстановить пароль
  1. Старый комментарий
    Аватар для Loafer
    Потокобезопасная очередь
    Цитата:
    Сообщение от Avazart Просмотреть комментарий
    Для начала:
    C++
    1
    2
    3
    4
    5
    6
    
     // Извлечение из начала очереди
      std::unique_ptr<Node> pop_head() {
        std::unique_ptr<Node> old_head = std::move(m_head);
        m_head = std::move(old_head->next);
        return std::move(old_head);
      }
    Почему Вы решили что тут не нужны блокировки и это потокобезопасно?
    Метод pop_head является приватным, значит пользователь его никогда не вызовет извне. А внутри других публичных методов, где вызывается метод pop_head, метод pop_head всегда защищен мьютексом.

    Цитата:
    Сообщение от Avazart Просмотреть комментарий
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    std::shared_ptr<T> try_pop() {
        LockGuard head_lock(m_head_mutex);
        if (m_head.get() == get_tail()) {
          return nullptr;
        }
     
        std::unique_ptr<Node> old_head = pop_head();
        return old_head->data;
      }
    Зачем здесь shared_ptr ? Какая аргументация?
    Это один из перегруженных вариантов try_pop, который возвращает shared_ptr на извлеченный элемент из очереди. Я делал очередь на основании книги, которая указана в самом верхнем комментарии в коде. Почему автор выбрал shared_ptr, я информации в книге не нашел. Наверное, из-за каких-то своих собственных предпочтений.
    Запись от Loafer размещена Сегодня в 00:27 Loafer вне форума
  2. Старый комментарий
    Аватар для Avazart
    Потокобезопасная очередь
    Для начала:
    C++
    1
    2
    3
    4
    5
    6
    
     // Извлечение из начала очереди
      std::unique_ptr<Node> pop_head() {
        std::unique_ptr<Node> old_head = std::move(m_head);
        m_head = std::move(old_head->next);
        return std::move(old_head);
      }
    Почему Вы решили что тут не нужны блокировки и это потокобезопасно?


    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    std::shared_ptr<T> try_pop() {
        LockGuard head_lock(m_head_mutex);
        if (m_head.get() == get_tail()) {
          return nullptr;
        }
     
        std::unique_ptr<Node> old_head = pop_head();
        return old_head->data;
      }
    Зачем здесь shared_ptr ? Какая аргументация?
    Запись от Avazart размещена Вчера в 23:12 Avazart на форуме
    Обновил(-а) Avazart Вчера в 23:17
  3. Старый комментарий
    Аватар для Loafer
    Потокобезопасная очередь
    Цитата:
    Сообщение от Avazart Просмотреть комментарий
    Кажется что-то намудренно с умными указателям.
    Где именно?

    Цитата:
    Сообщение от Avazart Просмотреть комментарий
    Да и наверное стоит на git сразу ссылку давать что бы качать/смотреть/пробовать удобнее было читателям.
    Для небольших фрагментов кода не хочется создавать отдельные репозитории на GitHub'е.
    Запись от Loafer размещена Вчера в 22:16 Loafer вне форума
  4. Старый комментарий
    Аватар для Loafer
    Потокобезопасная очередь
    Цитата:
    Сообщение от Croessmah Просмотреть комментарий
    Эта очередь не является потокобезопасной.
    Хотелось бы пруфов.
    Запись от Loafer размещена Вчера в 22:15 Loafer вне форума
  5. Старый комментарий
    Аватар для Avazart
    Потокобезопасная очередь
    Кажется что-то намудренно с умными указателям.

    Да и наверное стоит на git сразу ссылку давать что бы качать/смотреть/пробовать удобнее было читателям.
    Запись от Avazart размещена Вчера в 21:46 Avazart на форуме
    Обновил(-а) Avazart Вчера в 21:48
  6. Старый комментарий
    Аватар для Croessmah
    Потокобезопасная очередь
    Эта очередь не является потокобезопасной.
    Запись от Croessmah размещена Вчера в 21:23 Croessmah вне форума
  7. Старый комментарий
    Без названия.
    Цитата:
    Сообщение от Grey Просмотреть комментарий
    прикольно.
    раньше знал о програмных тонких клиентах. когда к компу подключают 2 клавиатуры, 2 монитора.
    впервые вижу аппаратный тонкий клиент.
    Да они вполне себе распространены. Берем обычный комп, убираем из него жесткий диск, оставляем маломощную видеокарту (возможно, интегрированную в чипсет или CPU) - и готово. Загружается такой недокомпьютер по сети.
    Цитата:
    Сообщение от Grey Просмотреть комментарий
    насколько понимаю, он обрабатывает данные с клавиатуры и передаёт на сервер.
    принимает данные с сервера и выводит на монитор.
    по идее мощное железо здесь и не нужно.
    Да, именно так. Но чтобы сэкономить до использования FPGA... Я с трудом представляю себе, как это работает. Разве что эмулировать какой-то маломощный CPU на FPGA? А смысл?
    Запись от Dmitry Zhadan размещена Вчера в 19:58 Dmitry Zhadan вне форума
  8. Старый комментарий
    Аватар для Grey
    Без названия.
    прикольно.
    раньше знал о програмных тонких клиентах. когда к компу подключают 2 клавиатуры, 2 монитора.
    впервые вижу аппаратный тонкий клиент.
    насколько понимаю, он обрабатывает данные с клавиатуры и передаёт на сервер.
    принимает данные с сервера и выводит на монитор.
    по идее мощное железо здесь и не нужно.
    Запись от Grey размещена 09.08.2020 в 22:04 Grey вне форума
  9. Старый комментарий
    Аватар для 8Observer8
    Генерация логотипа на Python в Blender 2.8. Загрузка логотипа в C# OpenGL 3 из Collada (.dae) формата
    Вывод программы:

    Цитата:
    "1 0 0 2 0 1 0 0 2 1 0 3 3 0 4 2 0 5\n"
    Входной файл:

    Plane.dae

    XML
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    
    <?xml version="1.0" encoding="utf-8"?>
    <COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <asset>
        <contributor>
          <author>Blender User</author>
          <authoring_tool>Blender 2.83.3 commit date:2020-07-22, commit time:06:01, hash:353e5bd7493e</authoring_tool>
        </contributor>
        <created>2020-08-03T14:03:19</created>
        <modified>2020-08-03T14:03:19</modified>
        <unit name="meter" meter="1"/>
        <up_axis>Z_UP</up_axis>
      </asset>
      <library_effects>
        <effect id="PlaneMaterial-effect">
          <profile_COMMON>
            <technique sid="common">
              <lambert>
                <emission>
                  <color sid="emission">0 0 0 1</color>
                </emission>
                <diffuse>
                  <color sid="diffuse">0.01664001 0.8000001 0.01191879 1</color>
                </diffuse>
                <reflectivity>
                  <float sid="specular">0.5</float>
                </reflectivity>
              </lambert>
            </technique>
          </profile_COMMON>
        </effect>
      </library_effects>
      <library_images/>
      <library_materials>
        <material id="PlaneMaterial-material" name="PlaneMaterial">
          <instance_effect url="#PlaneMaterial-effect"/>
        </material>
      </library_materials>
      <library_geometries>
        <geometry id="Plane-mesh" name="Plane">
          <mesh>
            <source id="Plane-mesh-positions">
              <float_array id="Plane-mesh-positions-array" count="12">-1 -1 0 1 -1 0 -1 1 0 1 1 0</float_array>
              <technique_common>
                <accessor source="#Plane-mesh-positions-array" count="4" stride="3">
                  <param name="X" type="float"/>
                  <param name="Y" type="float"/>
                  <param name="Z" type="float"/>
                </accessor>
              </technique_common>
            </source>
            <source id="Plane-mesh-normals">
              <float_array id="Plane-mesh-normals-array" count="3">0 0 1</float_array>
              <technique_common>
                <accessor source="#Plane-mesh-normals-array" count="1" stride="3">
                  <param name="X" type="float"/>
                  <param name="Y" type="float"/>
                  <param name="Z" type="float"/>
                </accessor>
              </technique_common>
            </source>
            <source id="Plane-mesh-map-0">
              <float_array id="Plane-mesh-map-0-array" count="12">1 0 0 1 0 0 1 0 1 1 0 1</float_array>
              <technique_common>
                <accessor source="#Plane-mesh-map-0-array" count="6" stride="2">
                  <param name="S" type="float"/>
                  <param name="T" type="float"/>
                </accessor>
              </technique_common>
            </source>
            <vertices id="Plane-mesh-vertices">
              <input semantic="POSITION" source="#Plane-mesh-positions"/>
            </vertices>
            <triangles material="PlaneMaterial-material" count="2">
              <input semantic="VERTEX" source="#Plane-mesh-vertices" offset="0"/>
              <input semantic="NORMAL" source="#Plane-mesh-normals" offset="1"/>
              <input semantic="TEXCOORD" source="#Plane-mesh-map-0" offset="2" set="0"/>
              <p>1 0 0 2 0 1 0 0 2 1 0 3 3 0 4 2 0 5</p>
            </triangles>
          </mesh>
        </geometry>
      </library_geometries>
      <library_visual_scenes>
        <visual_scene id="Scene" name="Scene">
          <node id="Plane" name="Plane" type="NODE">
            <matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
            <instance_geometry url="#Plane-mesh" name="Plane">
              <bind_material>
                <technique_common>
                  <instance_material symbol="PlaneMaterial-material" target="#PlaneMaterial-material">
                    <bind_vertex_input semantic="UVMap" input_semantic="TEXCOORD" input_set="0"/>
                  </instance_material>
                </technique_common>
              </bind_material>
            </instance_geometry>
          </node>
        </visual_scene>
      </library_visual_scenes>
      <scene>
        <instance_visual_scene url="#Scene"/>
      </scene>
    </COLLADA>
    Запись от 8Observer8 размещена 06.08.2020 в 20:59 8Observer8 вне форума
    Обновил(-а) 8Observer8 06.08.2020 в 21:02
  10. Старый комментарий
    Аватар для 8Observer8
    Генерация логотипа на Python в Blender 2.8. Загрузка логотипа в C# OpenGL 3 из Collada (.dae) формата
    Qt поддерживает XPath 2.0. Проблема с пространствами имён в Collada (.dae) файле решается с помощью локальных имён.

    Пример (источник)

    C++ (Qt)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
        QString planePath = ":/Models/Plane.dae";
        QFile f(planePath);
        if (!f.open(QIODevice::ReadOnly))
        {
            std::cerr << "Failed to load the file: " <<
                         planePath.toStdString() << std::endl;
            return;
        }
     
        QXmlQuery query;
        query.bindVariable("myFile", &f);
    //    query.setQuery("doc($myFile)//*[local-name() = 'p']/text()"); // it works too but it is XPath 1.0
        query.setQuery("doc($myFile)//*:p/text()");
     
        QString result;
        query.evaluateTo(&result);
        qDebug() << result;
        f.close();
    Запись от 8Observer8 размещена 06.08.2020 в 20:59 8Observer8 вне форума
  11. Старый комментарий
    Аватар для Avazart
    Библиотека libcurl в С++ для работы по HTTP
    Цитата:
    C++
    1
    
    #pragma comment (lib, "libcurl_a.lib")
    Не верно указано или отсутствует.
    И вообще "*_a.lib" это для MinGW, а не MSVC.
    Запись от Avazart размещена 05.08.2020 в 20:31 Avazart на форуме
    Обновил(-а) Avazart 05.08.2020 в 20:33
  12. Старый комментарий
    Аватар для I can
    Не задавайтесь сисадники.
    Могу написать функцию вычисления определителя квадратной матрицы при помощи предварительного разложения
    в треугольный вид методом Гаусса, при помощи предварительного LU-разложения, при помощи предварительного
    разложения Холецкого, при помощи предварительного разложения в треугольный вид методом вращений.
    Или сразу функцию решения системы линейных уравнений с ленточными матрицами различных видов...
    Но кому это надо ?
    Запись от I can размещена 04.08.2020 в 08:08 I can вне форума
  13. Старый комментарий
    Библиотека libcurl в С++ для работы по HTTP
    Цитата:
    Сообщение от Black Fregat Просмотреть комментарий
    polakware, это архив с исходниками, его собирать надо. А в конце страницы https://curl.haxx.se/download.html - ссылки на готовые библиотеки для Windows (по алфавиту)
    Я скомпилировал либы через nmake и добавил директорию в доп. библиотеки и в доп. зависимости, а папку инклюд в доп. каталоги включаемых файлов, но при компилировании выдает ошибку
    Код:
    Серьезность	Код	Описание	Проект	Файл	Строка	Состояние подавления
    Ошибка	LNK2019	ссылка на неразрешенный внешний символ curl_easy_init в функции main	CURLTest	C:\Users\dkari\source\repos\CURLTest\CURLTest\main.obj	1
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    #define CURL_STATICLIB
    #pragma comment( lib, "ws2_32.lib" )
    #pragma comment( lib, "Wldap32.lib" )
    #pragma comment (lib, "libcurl_a.lib")
     
    #include <iostream>
    #include <curl/curl.h>
     
    int main() {
        CURL* curl;
        curl = curl_easy_init();
    }
    В чем проблема? Проект на х64
    Запись от polakware размещена 04.08.2020 в 07:17 polakware вне форума
  14. Старый комментарий
    Аватар для Black Fregat
    Библиотека libcurl в С++ для работы по HTTP
    polakware, это архив с исходниками, его собирать надо. А в конце страницы https://curl.haxx.se/download.html - ссылки на готовые библиотеки для Windows (по алфавиту)
    Запись от Black Fregat размещена 04.08.2020 в 05:00 Black Fregat вне форума
  15. Старый комментарий
    Расчет магических квадратов.
    К сожалению предложенный мною ранее аналитический метод расчета магических квадратов совершенно не применим, так как определить такой системы линейных уравнений равен 0.
    Приношу опять свое извинение за указание ложного пути решения этой задачи.
    Запись от Баженов размещена 03.08.2020 в 23:09 Баженов вне форума
  16. Старый комментарий
    Не задавайтесь сисадники.
    Это не ирония, а обозначение задачи автоматизации очень нужной и важной для решения систем линейных уравнений.
    Без автоматизации расчета определителей такая задача, особенно для систем линейных уравнений с большим количеством переменных крайне затруднительна. А такие системы встречаются в самых различных областях.
    Прошу прощения,если кого обидел,не имея такого умысла.
    Запись от Баженов размещена 03.08.2020 в 23:02 Баженов вне форума
  17. Старый комментарий
    Тайна чертова квадрата
    Это справедливо только для m=n
    Запись от Баженов размещена 03.08.2020 в 22:53 Баженов вне форума
  18. Старый комментарий
    Библиотека libcurl в С++ для работы по HTTP
    А где именно в архиве dll-файлы?
    качал это https://curl.haxx.se/download/curl-7.71.1.tar.gz
    Запись от polakware размещена 03.08.2020 в 19:18 polakware вне форума
  19. Старый комментарий
    Аватар для coderxx
    MyFbFramework + VisualFBEditor 1.2.4
    Версия 1.2.5 (2 августа, 2020)
    - Добавлен: Инструмент COMWrapperBuilder
    - Добавлен: Предложить перезагрузить файл после изменений внешней программой
    - Добавлен: Текущая строка, столбец и т.д. в строке состояния
    - Добавлен: Приклеивание вспомогательных окон
    - Добавлен: Пункт меню "Очистить" для последних файлов, проектов, сессий, папок
    - Добавлен: Опция «Отображать предупреждения при отладке»
    - Добавлен: Расширение .frm для модуля Форм
    - Добавлен: Опция Ограничение отладки по каталогу основного файла
    - Добавлен: Функция Пользовательских инструментов
    - Добавлен: Изменен значок для несуществующих файлов в Project Explorer
    - Добавлен: Выделение с помощью левой кнопкой мыши вовремя вращения колесико мыши
    - Добавлен: Много цветовых тем (спасибо: Thomas Frank Ludewig)
    - Добавлен: Горячие клавиши можно изменить в окне настроек
    - Добавлен: Аргументы командной строки gdb в Debug
    - Добавлен: При переключении формы / кода панель инструментов появляется / скрывается
    - Добавлен: Немецкий язык
    - Добавлен: Функция GetErrorString для функции GetLastError
    - Добавлен: Нажатие клавиши F8 запустит интегрированный отладчик IDE
    - Добавлен: Открыть и Закрыть папку
    - Добавлен: Командная строка в меню Файл
    - Добавлен: Сохранить проект и Сохранить проект как ...
    - Добавлен: Функция сортировки строк
    - Добавлен: Перезаписать изменения в Intellisense
    - Добавлен: Начальный каталог к Путь к проектам в Открыть проект
    - Исправлен: EditControl.LoadFromFile для загрузки длинных строк
    - Исправлен: Сохранение нового файла в Путь к проектам
    - Исправлен: ChangeLog и cписок ToDo
    - Исправлен: Медлительность при рисовании в 64-битном EditControl
    - Исправлен: Код отступа
    - Исправлен: Интегрированный отладчик IDE в 64-бит
    - Исправлен: Выделение с помощью прокрутки вверх с нажатой мышью
    - Исправлен: Диалог Поиска получает текущий текст по умолчанию
    - Исправлен: Функция «Форматировать проекта»
    - Исправлен: Закрыть Проект закрывает открытые вкладки тоже
    - Исправлен: Использование пути к проектам
    - Исправлен: Выбор пути к проектам в окне настроек
    - Исправлен: Ввод с помощью <ALT + GR> в EditControl
    - Исправлен: Сбой при вырезании из EditControl
    - Исправлено: установка активности TabPage в режиме дизайна
    Запись от coderxx размещена 02.08.2020 в 20:28 coderxx вне форума
  20. Старый комментарий
    Энергоденьги
    Если засекречен, то "сжигание" долларов - вопрос веры.
    И не в чем тут рационально разбираться.
    Запись от politoto размещена 01.08.2020 в 19:12 politoto на форуме
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.