Multithread Prozesse und lesen aus großer Datei ????
-
hi,
ich habe eine ziehmlich große Datei die ich nicht in den RAM einlesen wollte.
Ich habe viele Threads die allerding auf diese Datei zugreifen müssen, und zwar
auf unterschiedliche zeilen. wie mache ich das am besten, immer von vorne anfangen und bis zu der gewissen zeile springen, ist ziehmlicher müll, die anzahl der threads ist auch variable, ich habe keine ahnung.
-
benutzt du windows? dann könnteste es mit 'file mapping' versuchen. guckst du: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/createfilemapping.asp
damit holste dir teile der datei in den speicher und die threads können darauf zugreifen als wär's 'memory', brauchen also kein filehandling selber machen
-
also gehts nicht ums in speicher laden, problem ist, die file ist 10mb groß, manche threads brauch vom anfang was andere wiederum vom ende. dann müsste ich ja also das ganze einlesen
-
Was du suchst ist ein brauchbarer Chaching-Algorithmus... Mit MemoryMapped Files würdest du diese Aufgabe dem Betriebssystem auferlegen, welches (hoffentlich) schon einen solchen Algo verpasst gekriegt hat.
Insofern ist net's Vorschlag gar nicht so daneben.Funktioniert übrigens nicht nur auf Windows... Nur ist der Mechanismus (API) bei *nixen z.B. bestimmt anders.
-junix
-
okay, werde mich damit mal beschäftigen, übrigends unter linux gibt es das auch
danke
-
Für sowas gibt es Datenbanken. Dies haben eine Suche bereits drin.
Oder du erstellst selbst eine Index.