|
You last visited: Today at 05:04
Advertisement
Threads auf Arbeitsspeicher auslagern
Discussion on Threads auf Arbeitsspeicher auslagern within the C/C++ forum part of the Coders Den category.
03/26/2016, 21:28
|
#31
|
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
|
Quote:
Originally Posted by Waller66
also einfach einmal sizeof in eine int variable und die dann immer benutzen ? ich danke euch für den ganzen support
|
Nein nicht ein einziges mal sizeof benutzen. Alles was sizeof weiß, weißt du als Programmierer ebenfalls spätestens zur Laufzeit (zumindest wenn du es für Arrays benutzt) und alles was du nicht weißt, weiß sizeof auch nicht.
Das heißt NIE heißt auch wirklich NIE.
Wenn du dein Array über new anlegst musst du einmal irgendwo die Größe angegeben haben und wenn du das array direkt auf den Stack anlegst, kennst du ebenfalls die Größe. Das heißt du brauchst nie sizeof und vor allem als Anfänger rate ich jedem von sizeof ab, weil es einfach nicht das kann was sich ein Anfänger wünscht, was es kann.
Wie gesagt gibt es in 95% der Fälle keinen Grund sizeof zu benutzen und mit den restlichen 5% kommst du eh nicht in berührung, wenn du noch relativ neu im Programmierbereich bist.
|
|
|
03/27/2016, 07:57
|
#32
|
elite*gold: 0
Join Date: Nov 2010
Posts: 1,548
Received Thanks: 333
|
wie muss man die threads über die cpu verteilen bzw zuweisen, ich will das er alle und nicht nur einen kern nutzt.
SYSTEM_INFO s_systeminfo;
if ( Betriebsystem >= WindowsXP )
{
GetNativeSystemInfo( &s_systeminfo );
//Anm: Damit die Software auch auf Win2000 oder früher läuft, mußt Du die Funktion
//GetNativeSystemInfo() per LoadLibrary() und GetProcAddress() verwenden!
}
else
{
GetSystemInfo( &s_systeminfo );
}
anzahlCPU = s_systeminfo.dwNumberOfProcessors ;
|
|
|
03/27/2016, 13:58
|
#33
|
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
|
Quote:
Originally Posted by Waller66
wie muss man die threads über die cpu verteilen bzw zuweisen, ich will das er alle und nicht nur einen kern nutzt.
SYSTEM_INFO s_systeminfo;
if ( Betriebsystem >= WindowsXP )
{
GetNativeSystemInfo( &s_systeminfo );
//Anm: Damit die Software auch auf Win2000 oder früher läuft, mußt Du die Funktion
//GetNativeSystemInfo() per LoadLibrary() und GetProcAddress() verwenden!
}
else
{
GetSystemInfo( &s_systeminfo );
}
anzahlCPU = s_systeminfo.dwNumberOfProcessors ;
|
Passiert vollautomatisch du musst die threads nur erstellen, schau dir dafür einfach einmal "std::thread" an.
Die perfekte Anzahl an Threads variiert je nach Anwendung, als Daumenregel kann man aber sagen, dass 2x so viele Threads wie man Kerne hat ganz gut ist.
|
|
|
03/27/2016, 18:35
|
#34
|
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 572
|
Mir scheint es als wärst du recht neu in der ganzen Multithreading Geschichte. Daher möchte ich an dieser stelle warnen, Multithreading bietet eine ganze Reihe an Gefahren und Falltüren, die ein sehr großer Fehlerherd. Als kleines Beispiel:
Code:
Thread1:
while (1)
if (i == SOMECONST) // Sei i eine beliebige geteilte Variable und SOMECONST ein beliebiger wert
std::cout << i << std::endl;
Thread2:
while (1)
i = getNewValue(i); // beliebige Funktion um neuen Wert zu ermitteln
Das was letztlich ausgegeben wird ist komplett undefiniert, z.B. i sein int und SOMECONST sei 2, und GetNewValue sei i+1,
Dann arbeitet Thread1 bis zum If, und i ist dann 2, dann wird Thread1 unterbrochen und Thread2 aufgerufen, dieser läuft n mal durch bevor dieser unterbrochen wird, und als Ausgabe steht dann da 2+n statt 2.
Daher würde ich dir empfehlen dich erst gut in das Thema und seine Probleme einzuarbeiten.
|
|
|
03/27/2016, 20:11
|
#35
|
elite*gold: 0
Join Date: Nov 2010
Posts: 1,548
Received Thanks: 333
|
ich weiß immer noch nicht genau wie ich die lese und rechnen thread angleiche sodass die rechnen threads nicht weil sie noch die addresse von nem pointer benutzen der aber schon zum nächsten array feld gelaufen ist, das macht mir bislang sorge aber ich danke wie immer für den input
|
|
|
03/27/2016, 20:23
|
#36
|
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 572
|
Quote:
Originally Posted by Waller66
ich weiß immer noch nicht genau wie ich die lese und rechnen thread angleiche sodass die rechnen threads nicht weil sie noch die addresse von nem pointer benutzen der aber schon zum nächsten array feld gelaufen ist, das macht mir bislang sorge aber ich danke wie immer für den input
|
Ich kenne mich mit C++ nicht so gut aus, aber die Klasse Thread sollte entsprechende Methoden zur Synchronisation bereitstellen. Google einfach nach C++ Thread Synchronisation
|
|
|
03/27/2016, 20:31
|
#37
|
elite*gold: 0
Join Date: Nov 2010
Posts: 1,548
Received Thanks: 333
|
wie durch sucht man eine struct also zb mehrere int werte am schnellsten nach kombis ?
hatte ich mal in informatik aber kein plan wie die algorithmen heißen, wäre cool wenns einer noch wüsste, sonst würde ich zu erst 1 dann 2 dann 3ten wert checken ob der auch gleich ist , dürfte doch das schnellste sein oder bin ich so auf dem holzweg ?
|
|
|
03/27/2016, 21:09
|
#38
|
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
|
Quote:
Originally Posted by Waller66
wie durch sucht man eine struct also zb mehrere int werte am schnellsten nach kombis ?
hatte ich mal in informatik aber kein plan wie die algorithmen heißen, wäre cool wenns einer noch wüsste, sonst würde ich zu erst 1 dann 2 dann 3ten wert checken ob der auch gleich ist , dürfte doch das schnellste sein oder bin ich so auf dem holzweg ?
|
Schnapp dir eine Hashmap/Binärbaum (z.B. unordered_map bzw. map), dann kriegst dus in O(n*log (n)) hin bzw. in amortisiert O(n) hin.
Das heißt immer wenn 2 Structs im selben Bin landen würden, sind sie gleich (bei entsprechender Hash-Funktion).
Google am besten mal Hashmap/Hashtable oder wenn dir das zu umständlich ist, machs wie dus ursprünglich wolltest.
|
|
|
03/27/2016, 21:41
|
#39
|
elite*gold: 0
Join Date: Nov 2010
Posts: 1,548
Received Thanks: 333
|
alles klar eine dümmere frage finde gerade nur **** um zeit als int zum wochentag int returnen zu lassen
die infos seiten sind so blöd gemacht, wie macht man ne messagebox
|
|
|
03/28/2016, 00:37
|
#40
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Findest du nicht, dass du langsam bisschen lächerliche Fragen stellst?
Such doch bitte erst mal bisschen, bevor du sofort hier rein springst und deine Frage stellst..
Ich bin sowieso verwundert, dass Shadow dir immer noch einfach so hilft
Außer natürlich ich habe nicht richtig verstanden, dass das mit der MessageBox ein Witz ist oder so.
Padmak
|
|
|
03/28/2016, 03:29
|
#41
|
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
|
Quote:
Originally Posted by Padmak
Findest du nicht, dass du langsam bisschen lächerliche Fragen stellst?
Such doch bitte erst mal bisschen, bevor du sofort hier rein springst und deine Frage stellst..
Ich bin sowieso verwundert, dass Shadow dir immer noch einfach so hilft
Außer natürlich ich habe nicht richtig verstanden, dass das mit der MessageBox ein Witz ist oder so.
Padmak
|
Muss ich ihm leider zustimmen, lächerlich ist vielleicht übertrieben, aber das sind Fragen, die kann man sich echt (vielleicht mit bissel mehr googlen) selbst erklären und wenn nicht, dann solltest du nochmal die Grundlagen studieren. :/
|
|
|
03/28/2016, 06:37
|
#42
|
elite*gold: 70
Join Date: Jul 2011
Posts: 496
Received Thanks: 194
|
Quote:
Originally Posted by Waller66
alles klar eine dümmere frage finde gerade nur **** um zeit als int zum wochentag int returnen zu lassen
die infos seiten sind so blöd gemacht, wie macht man ne messagebox
|
Du verlinkst schon die msdn und fragst trotzdem noch wie man eine MessageBox macht? -.-
Scher dich vor ein Buch und lerne erstmal die Grundlage erneut, bevor du dir alles zusammen kopierst.
|
|
|
03/28/2016, 18:00
|
#43
|
elite*gold: 0
Join Date: Nov 2010
Posts: 1,548
Received Thanks: 333
|
lel es ging mir bei der msgbox darum das einer kurz die line irgendwo rauskopiert und hier postet ^^ und ja ist als halber scherz zu verstehen.
dayofweek etc habe ich mittlerweile
Soll ich bei dem Rechnenprozess über die int arraycounter vom Leseprozess kommunizieren lassen , dabei muss nur sicher gestellt sein das die schneller sind als der lese thread oder ?
lächerlich ist nicht konstruktiv zu sein.
kann man klassen in klassen deklarieren ?
|
|
|
03/28/2016, 19:04
|
#44
|
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
|
Quote:
Originally Posted by Waller66
Soll ich bei dem Rechnenprozess über die int arraycounter vom Leseprozess kommunizieren lassen , dabei muss nur sicher gestellt sein das die schneller sind als der lese thread oder ?
|
Ja das ist eindeutig der beste Weg. Dabei kann praktisch gar nichts schief gehen und es ist viel schneller als atomics oder einen Mutex zu benutzen. Ich weiß auch nicht warum Leute geteilte Speicherbereiche vor mehreren gleichzeitigen Zugriffen schützen.
Jetzt mal ehrlich dir wurde das doch schon vor ~4 Posts gesagt, dass das relativ schwer ist Programme mit mehreren Threads richtig zu schreiben und dass du auf jeden Fall Sachen synchronisieren musst. Und dann fragst du ob ein "einfacher" int reicht für die Kommunikation. Erstmal ist dein Satz extrem schlecht formuliert (der Leseprozess soll schneller als der Lese thread sein ???) und da fehlen einfach sehr wichtige Informationen (synchronisiert du das irgendwie ? wie benutzt du die variable ?).
Quote:
Originally Posted by Waller66
lächerlich ist nicht konstruktiv zu sein.
|
Nicht konstruktiv sein bedeutet dann also mit zu wenigen Informationen dir Sachen aus allen möglichen Themenbereichen zum copy und pasten vorzulegen. Ich weiß ja nicht wie das bei den anderen ist, aber mich stört es nach einer Zeit extrem wenn Leute nicht mal so tun, als ob sie was lernen wollen.
Quote:
Originally Posted by Waller66
kann man klassen in klassen deklarieren ?
|
Ja nur dann machst du sehr wahrscheinlich was falsch. Als Anfänger wirst du das nicht brauchen und hast wahrscheinlich einen sehr schlechten Aufbau von deinen Klassen.
Generell scheint mir dein ganzes Vorhaben extrem wenig durchdacht zu sein. Das liegt daran, dass du wenig Erfahrung damit hast und die Sprache kaum kannst. Beide Sachen kannst du Aufbessern, indem du lernst. Also genau das Gegenteil von dem machst, was du hier im Moment machst. Wir könnten dir alles mögliche zum kopieren geben und es würde am Ende wahrscheinlich trotzdem nicht funktionieren. Wie wäre es wenn du erstmal die Sprache lernst (oder überhaupt herausfindest, dass du nicht C++ mit CLI benutzt) und dann dir anguckst, was ein Mutex ist, wofür man den braucht usw.
|
|
|
03/28/2016, 19:42
|
#45
|
elite*gold: 0
Join Date: Nov 2010
Posts: 1,548
Received Thanks: 333
|
es gibt kein einziges deutsches video zu threads und bei c++ ist die informationsfülle deutlich magerer als zu framework sprachen...
und das was ich machen will klappt bis jetzt soweit
async(test(),true);
CreateThread(NULL, NULL,(LPTHREAD_START_ROUTINE)test(), NULL, NULL, NULL);
bekomme das nicht mal hin,meckert wegen async und LPTHREAD
|
|
|
|
|
Similar Threads
|
[PHP] Funktionen auslagern
11/26/2015 - Web Development - 2 Replies
Wollte fragen ob es sinnvoll ist functionen alle in eine datei auszulagern z.b. sachen wie die connection zur datenbank oder eine login funktion und sie dann in der entsprechenden stelle nur noch aufzurufen.
Danke:handsdown:
|
Neue SSD was auslagern?
06/16/2015 - Technical Support - 5 Replies
Hab mir ne neue SSD (Samsung 850 EVO) geholt und darauf soll eigentlich nur windows, paar treiber/programme und 1 Spiel.
Hab überleg eigene Dokumente, bilder, musik downloads etc auf eine andere festplatte zu machen, nur weiß ich leider nicht so recht wie.
Gibt es ansonsten noch etwas was ich bei der ssd beachten soll? (AHCI ist an und läuft auch über sata3). Hab bereits den Computerschutz mit der Wiederherstellung ausgeschaltet und 0,3 TB geschrieben
|
PHP - Seitencontent auslagern
01/26/2014 - Web Development - 4 Replies
Liebe Coder unter euch,
ich habe versucht, in meiner Webseite den Seitencontent der einzelnen Unterseiten auszulagern. Soll heißen, dass ich eine Standarddatei "index.php" habe in der alles definiert ist. Wenn ich nun auf eine andere Datei wechsel, soll die URL um "?page=SEITENNAME" erweitert werden und der Content soll aus der Datei SEITENNAME im Verzeichnis "page" geladen werden.
Meine Navigation: <ul>
<li><a href="?page=index">Home</a>< /li>
<li><a href="?page=activity"...
|
Von 5GB Arbeitsspeicher werden nur 4GB Arbeitsspeicher angezeit?? Hilft mir
12/26/2012 - Technical Support - 8 Replies
Ich habe mir heute ein Arbeisspeicher (RAM) Karte gekauft.
Die 2GB hat, ich habe die eingebaut. Computer angemacht, und dann wurden nur 4 GB angezeigt.
Ich hatte davor 3 GB Arbeitsspeicher drinnen.
Mein Computer:
Windows 7 / 64 Bit /
Was kann ich machen??
Oder kann mein Computer nicht mehr wie 4GB Arbeitsspeicher haben??
|
All times are GMT +1. The time now is 05:04.
|
|