Pages: (3) 1 [2] 3  ( Show unread post )

> туплю в c++
 Lord KiRon Member is Offline
 Posted: 19-11-2010, 02:01 (post 16, #991172)

Part time flamer

Group: Read Only
Posts: 7784
Warn:0%-----
QUOTE (Lexus @ 18-11-2010, 23:24)
QUOTE (Lord KiRon @ 18-11-2010, 22:15)
Гугл наше все:
http://condor.depaul.edu/~dmumaugh/readings/handouts/CSC343/unixthreads.html
Спасибо. Есть ешё вопрос. У меня объект Tree2D, в нём функция UpdateRate. Тредами я запускаю эту функцию 4-5 раз. Может такое быть, что будет ешё медленей из-за того, что все на один объект кидаються?
Может.
Вообще потоки это не гарантия что будет быстрее, если не понимать что делать скорее гарантия того что будут проблемы, лучше запускай всего один (второй) и в нем обновляй по таймеру. И про синхронизацию не забудь а то будет весело.
PM
Top Bottom
 FiL Member is Offline
 Posted: 19-11-2010, 05:26 (post 17, #991176)

Сварливый Мозг Клуба
Group: Roots
Group: Roots
Posts: 22870
QUOTE (Lexus @ 18-11-2010, 16:24)
QUOTE (Lord KiRon @ 18-11-2010, 22:15)
Гугл наше все:
http://condor.depaul.edu/~dmumaugh/readings/handouts/CSC343/unixthreads.html
Спасибо. Есть ешё вопрос. У меня объект Tree2D, в нём функция UpdateRate. Тредами я запускаю эту функцию 4-5 раз. Может такое быть, что будет ешё медленей из-за того, что все на один объект кидаються?
параллельно запускать функции, работающие над одним и тем-же объектом... боясь, что будет только хуже. Или блокировки замучают или (если блокировки правильно не сделать) вообще хрен знает что получится.
PM Email Poster ICQ AOL MSN
Top Bottom
 Lexus Member is Offline
 Posted: 11-02-2011, 18:10 (post 18, #1006623)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
Напоролся на след. грабли.

Имеется пара файлоф-калссов. Под виндой компилиться, под линуксом тоже. В солярисе ругается на каждую строчку. делал даже "хелло ворлд" - под виндой и линуксом идёт, под солярисом орёт. Как выяснилось ему не нра переходы строк. Так как если это файло открыть под солярисом, что-то измеить и сохранить. То это же перестаёт компилиться под виндожсом. Говорит, что не одинаковые переходы строк. Можно как-то сделать всё посовместимей?
PM Email Poster Users Website
Top Bottom
 VxWorks Member is Offline
 Posted: 11-02-2011, 20:51 (post 19, #1006635)

Daysleeper
Group: Privileged
Group: Privileged
Posts: 21921
Warn:0%-----
В винде переход строк CR,LF а в линуксах только LF.

Есть IDE, которые позволяют менять тип перехода строк в зависимости от типа софта.

Из простых, под винду, есть такой Emeral Editor, к которому можно подцепить makefile и все такое. Этот редактор понимает линуксовые переходы строк. Вопрос только в том, поймет ли их твой toolchain :)

ЗЫ: только сегодня мне пришлось решать задачу распараллеливания на два процессора. Вернее, на процессор и сопроцессор. То еще счастье, надо заметить :(
PM
Top Bottom
 Lexus Member is Offline
 Posted: 11-02-2011, 21:11 (post 20, #1006638)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
А почему тогда под линуксом нормально компилируется, а пот солярисом орёт.
Во всех случая г++
PM Email Poster Users Website
Top Bottom
 VxWorks Member is Offline
 Posted: 11-02-2011, 21:13 (post 21, #1006639)

Daysleeper
Group: Privileged
Group: Privileged
Posts: 21921
Warn:0%-----
Может, линукс к этому более пофигистично стал относиться, кто его знает :)
PM
Top Bottom
 Lexus Member is Offline
 Posted: 11-02-2011, 21:35 (post 22, #1006640)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
попробую ту програмулинку.
PM Email Poster Users Website
Top Bottom
 izanoza Member is Offline
 Posted: 12-02-2011, 21:17 (post 23, #1006776)

Мышъ с сыром

Group: Prestige
Posts: 5279
Warn:0%-----
Командная строка тебе в помощь:
dos2unix
unix2dos
PM Email Poster
Top Bottom
 Lexus Member is Offline
 Posted: 18-02-2011, 10:31 (post 24, #1007361)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
QUOTE (izanoza @ 12-02-2011, 19:17)
Командная строка тебе в помощь:
dos2unix
unix2dos
Класс, спасибо.

Только заметил такой прикол. На некоторых файлах не до конца срабатывала прога. На них было вариантом открыть под маком в TextWrapper там выбрать юникс и UDF-8, По умолчанию был какой-то UDF-8 BOM.

Если изначально такое сделать, без дос2юникс, то всёравно были ошибки. Теперь засунул в юниксовском формате всё в студию и теперь пашит как на винде, так в солярисе.

PM Email Poster Users Website
Top Bottom
 Lexus Member is Offline
 Posted: 20-05-2011, 11:37 (post 25, #1019433)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
Опять ламерский вопрос:)))

CODE
2 2 2 1.85451 1.50428 1.44898 -0.1 1.39533 -0.1 1.35463 1.3364 1.3189 1.30166 1.28417 1.26619 1.24743 1.22461 1.17859 1.14986 1.1402 1.13277 1.12592 1.11947 1.11339 1.10758 1.10205 1.09674 1.09164 1.08674 1.08196 1.07733 1.07283 1.06844 1.06414 1.05992 1.05577 1.05171 1.04765 1.04366 1.0397 1.03576 1.03184 1.02793 1.02401 1.02008 1.01614 1.01217 1.00816 1.00411

имеется файлик с такими данными, надо его в ся считать в double array.
Как ничего не нашёл я, как парсить:(
PM Email Poster Users Website
Top Bottom
 Set Member is Offline
 Posted: 21-05-2011, 01:29 (post 26, #1019485)

Visionary

Group: Members
Posts: 5181
Warn:0%-----
PM
Top Bottom
 Lexus Member is Offline
 Posted: 21-05-2011, 08:39 (post 27, #1019492)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
QUOTE (Set @ 21-05-2011, 00:29)
http://bytes.com/topic/c/answers/618936-how-do-i-split-char-array-c
ооо, супер. спасибо!!!
PM Email Poster Users Website
Top Bottom
 Lexus Member is Offline
 Posted: 09-06-2011, 21:58 (post 28, #1021968)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
Ламерствую дальше )))

Имеется класс Tree. В мэйн части проги в начале создаются порядка 10000 обектов вида Node. Пихаются в Tree потом вызывается команда
Tree2D->BuildTree();

После идёт очень мучительная симуляция в while блоке, в которй Tree2D используется и его нужно через определённые интервалы времени или проходов перестраивать. делается это по средствам: Tree2D->BuildTree();
Но прога вылетает через некоторое кол-во обновлений, так как память с 6мб выжирается до 500-700мб. Если Билдтри не делать, то память не жрётся.
Вопрос в том, как делать ребилд дерева без зажирания памяти.


CODE
#include <iostream>
#include <list>
#include <map>
#include <vector>
#include <fstream>
#include "Node.h"


using namespace std;


class Tree {
public:

list<Node*> _NodeList;
list<Node*> _TreeList;
multimap <double,Node*> _WorkList;
list<Node*>::iterator it;
Node n;

void AddNode(Node* NewNode) {

_NodeList.push_back(NewNode);

};

inline void BuildTree(){

_WorkList.clear();
_TreeList.clear();



for (it = _NodeList.begin(); it != _NodeList.end(); it++)
{
n=**it;
_WorkList.insert(pair<double,Node*>(n.getRate() ,*it));

}
_TreeList = _NodeList;
//cout<<"B: "<<_TreeList.size()<<endl;


while(_WorkList.size()>1)
{

multimap<double, Node*>:: iterator map_it = _WorkList.begin();
Node *pFirstNode = map_it->second;
_WorkList.erase(map_it);
map_it = _WorkList.begin();
Node *pSecondNode = map_it->second;
    _WorkList.erase(map_it);
    Node *pNewNode = new Node(pFirstNode,pSecondNode);
    pFirstNode->_ParentNode=pNewNode;
    pSecondNode->_ParentNode=pNewNode;
    _WorkList.insert(pair<double,Node*>(pNewNode->getRate(),pNewNode));
    _TreeList.push_back(pNewNode);
}

_TreeList.back()->_ParentNode=0;



};

inline void UpdateRate(Node* ChangedNode){

if(ChangedNode->_NodeTyp==-2) return;


Node* next = ChangedNode->_ParentNode;
bool ParentNotNull=true;
while(ParentNotNull)  //0xCDCDCDCD Allocated in heap, but not initialized
{
next->_NodeRate=next->_nLeft->getRate()+next->_nRight->getRate();
ParentNotNull = (next->_ParentNode!= 0) ? true : false;
next=next->_ParentNode;

}


};


Tree(){};
~Tree();
};

PM Email Poster Users Website
Top Bottom
 boriskin Member is Offline
 Posted: 10-06-2011, 23:26 (post 29, #1022052)

Superman

Group: Members
Posts: 1175
Warn:0%-----
Иметь на каждый new соответствующий delete, который ьудет подчишать выделенную память как только она становится не нужна.
PM Email Poster ICQ
Top Bottom
 Lexus Member is Offline
 Posted: 11-06-2011, 00:03 (post 30, #1022053)

Коллекционер
Group: Global Moders
Group: Global Moders
Posts: 10401
QUOTE (boriskin @ 10-06-2011, 22:26)
Иметь на каждый new соответствующий delete, который ьудет подчишать выделенную память как только она становится не нужна.
т.е. при вызове
_WorkList.clear();
_TreeList.clear();

из List не удаляют объекты с памяти, а просто удаляются со списка?

Как бы так сказать ,я не совсем представляю, где delete вставлять)))))

PM Email Poster Users Website
Top Bottom
Topic Options Pages: (3) 1 [2] 3