Программирование на "С/C++" и не только

multi-core programming в линуксе?
Tsukasa
tsukasa
Хочу попробовать написать мульти-ядерную програмку (Федора линукс). Нужно очень мало: чтобы каждое ядро просто обсчитывало одну и ту же процедуру с разными параметрами и в виде какого-нибудь message передавало результат управляющему треду и получало новое задание. Внутри себя задачи будут полностью автономны, т.е. вещи типа mutexов будут неактуальны. Просто надо посчитать кучу одинаковых процедур.

Познания в параллельном программировании у меня теоретические. Какие тулкиты сейчас следует использовать? Желательны ссылки с примерами для быстрого старта.

(no subject)
cha_meleon
Здравствуйте! У меня проблема. Ширина кнопок разная. Подскажите, пожалуйста, как единую сделать?

<html>
<head>
    <title>Заведение вегетарианское</title>
    <script>
   document.createElement('aside');
   document.createElement('article');
  </script>
  <style>
   aside {
    padding: 10px;
    width: 10px;
    float: left;
   }
   article {
    margin-left: 10px;
    display: block;
   }
  </style>
 </head>
 
 <header>
<img src="C:\drive_d\Работа\Сайт\Фото/лого copy.jpg" alt="" width="200" height="65" hspace="530" vspace="30" border="1" align="center">
</header>

<body>
<body bgcolor="#A8C711"><body bgcolor="#78E095"><body bgcolor="#5BD97D"></body></body>

 <style>
   aside {
    padding: 10px;
    width: 10px;
    float: left;
   }
   article {
    margin-left: 10px;
    display: block;
   }
  </style>
   <p style="text-align: left"><button><font color="#866333"><strong>Новости</strong></font></button>
    </aside>
    </article>
    
     <style>
   aside {
    padding: 10px;
    width: 10px;
    float: left;
   }
   article {
    margin-left: 10px;
    display: block;
   }
  </style>
   <p style="text-align: left"><button><font color="#866333"><strong>О кафе</strong></font></button>
    </aside>
    </article>
    
      <style>
   aside {
    padding: 10px;
    width: 10px;
    float: left;
   }
   article {
    margin-left: 10px;
    display: block;
   }
  </style>
   <p style="text-align: left"><button><font color="#866333"><strong>Меню</strong></font></button>
    </aside>
    </article>
    
    
     <style>
   aside {
    padding: 10px;
    width: 10px;
    float: left;
   }
   article {
    margin-left: 10px;
    display: block;
   }
  </style>
   <p style="text-align: left"><button><font color="#866333"><strong>Полезная еда</strong></font></button>
    </aside>
    </article>
     <style>
   aside {
    padding: 10px;
    width: 10px;
    float: left;
   }
   article {
    margin-left: 10px;
    display: block;
   }
  </style>
   <p style="text-align: left"><button><font color="#866333"><strong>Услуги кафе</strong></font></button>
    </aside>
    </article>
     <style>
   aside {
    padding: 10px;
    width: 10px;
    float: left;
   }
   article {
    margin-left: 10px;
    display: block;
   }
  </style>
   <p style="text-align: left"><button><font color="#866333"><strong>Фотографии</strong></font></button>
    </aside>
    </article>
     <style>
   aside {
    padding: 10px;
    width: 10px;
    float: left;
   }
   article {
    margin-left: 10px;
    display: block;
   }
  </style>
   <p style="text-align: left"><button><font color="#866333"><strong>Партнеры</strong></font></button>
    </aside>
    </article>
   </body>
</html>

Помогите, пожалуйста, со стандартами кодирования
dreamy_actress
Для диплома на тему, связанную со сравнением кода со стандартом предприятия необходимы стандарты написания кода в различных фирмах, на предприятиях. Если есть, то на русском языке. В Интернете я смотрела, кое что нашла, но мало. Помогите пожалуйста, если у кого стандарты есть. 

о методах оптимизации и работы с памятью в C++
filoxsee
Хочу поделиться своим опытом по программированию и работе с памятью. Уже давно пришел к выводу, что для того, чтобы написать эффективный код (который будет быстро работать) нужно учитывать в первую очередь размещение объектов в памяти. Особенно это проявляется в методе программирования Data oriented designЭто метод, при котором в первую очередь проектирование новой системы начинают с решения, как будут в памяти размещаться ее элементы.

Современные CPU работают очень быстро и эффективность алгоритмов в значительной мере зависит не от самого алгоритма, а от того, как эти алгоритмы работают с памятью (тут речь идет не про фундаментальные алгоритмы сортировки, поиска и т.п. а прикладные алгоритмы реальных программ).
Вот базовые рекомендации при проектировании системы и написании кода, которые я выработал для себя:
1. Минимизируйте количество выделений памяти
2. Используйте хранилища данных
3. Храните одинаковые данные вместе
4. Работайте не с объектами а с коллекциями объектов
5. Поблочное выделение памяти
6. Учитывайте выравнивание
7. Знайте размер типов
Все это, с примерами, и деталями реализации и объяснениями и описал в своей статье: http://itw66.ru/blog/c_plus_plus/491.html

Старые технологии
erw_park
Добрые день!

Так уж получилось, что следующие несколько месяцев придется разбираться и изменять старый код, написанный на Delphi 5.5. Я уже очень давно программирую на Си++, последнее время немного на Cи-шарпе. С Паскалем сталкивался последний раз в школе лет 15 назад, с Дэльфи ни разу.

Я был бы очень благодарен, если бы кто-нибудь посоветовал соответствующюю литературу для быстрого обучения этому языку программирования, написанную для людей со знанием других языков.

функция возвращает объект с динамической ссылкой
kaz_orphan
уперся в следующее:

есть класс содержащий в себе указатель на динамическую память (кучу). В общем-то это массив размерность которого определяется при создании объекта. конструктор объекта кроме всего прочего, выделяет сколько нужно памяти и вносит ее адрес в соответствующее поле.

class MyClass {
...
type* data;
...
}

соответственно деструктор освобождает эту память, во избежание утечек памяти.

кроме того есть метод класса, который должен вернуть значение - объект того же класса, но с измененными значениями динамической памяти. Исходный объект и память на которую он указывает должны остаться неизменными.

внутри метода - все просто: создаю локальный экземпляр объекта, изменяю его динамическую область. А вот как вернуть это в вызывающий контекст - убей бох не пойму. Если сделать просто

MyClass MyClass::method(....) {

MyClass temp(....);
...
return temp;
}

деструктор объекта похерит динамическую память и присвоение

MyClass X(...);
MyClass Y(...);
...
Y = X.method(...);

заканчивается ошибкой кучи при выполнении.

Третий час сижу и ломаю голову, ничего не придумал. Что делать?

Помогите слинковать бустовую либу
chabapok
Пытаюсь собрать потокобезопасный json_spirit под виндой (mingw).

Компилю boost thread:
b2 toolset=gcc threading=multi link=shared

Либе json_spirit, если она собирается потокобезопасно, нужен boost_thread. Я добавил его в линковку, но на этапе линковки вываливается такая ошибка:
<много символов>: undefined reference to `_imp___ZN5boost6detail12set_tss_dataEPKvNS_10shared_ptrINS0_20tss_cleanup_functionEEEPvb'

Причем, если открыть бустовую .dll в текстовом редакторе, то можно найти, что строка _imp___ZN5boost6detail12set_tss_dataEPKvNS_10shared_ptrINS0_20tss_cleanup_functionEEEPvb там есть (правда, начинается с двух подчеркиваний). dependency walker показывает эту функцию в либе без префикса _imp___

линкую так:
g++ -shared -Wl,--out-implib,libjjson_spirit.a -o json_spirit.dll -L "D:\qtcreatorApps\boost\boost_1_48_0\stage\lib" -lboost_thread-mgw44-mt-1_48.dll json_spirit_reader.o json_spirit_writer.o json_spirit_value.o

полный вывод ошибки занимает >100кб, суть ошибок сводится к тому, что не получается найти функции, которые в dll явно есть. Что я делаю не так? Второй день бьюсь без результата. Перепробовал методом тыка кучу вариантов. Статически собрать получается, но статическая либа не хочет линковаться с проектом по аналогичной причине - не находит функции с именем _imp___многабукв

Ищем ведущих системных программистов. Киев
altiumhr

Ищем профессиональных Delphi/C++/C# программистов для нашей RnD команды в Киеве. ЗП от $3000. Только фултайм, рассматриваем людей из России, помогаем с переездом.  Проект – разработка  CAD  системы Altium Designer. Опыт работы не менее 6-7 лет. Все вопросы: iryna.vaskovskaya@altium.com

Будем благодарны за возможность разместить пост :)


Будет ли состояние гонок, если один поток меняет переменную типа bool, а другой читает из неё?
wildfrog
Существует 2 потока, один из которых читает данные из переменной типа bool, а другой может менять её значение.

Являются ли эти две операции атомарными по отношению друг к другу?
А если нет, то как сделать монопольный доступ к этой переменной?

(Ответ)

Есть кто живой?
маска Эсмарха
tarkhil
Из живых интересен человек, знающий, где определен макрос

NAMESPACE_COMMONCPP

а лучше того - собравший под FreeBSD libzrtpcpp-2.3.2

?

Log in