Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » volatile, PeekMessage und ein Timer...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.05.2004, 11:19 Uhr
Unwissende
...die wirklich Unwissende 8-)


Hallöchen nochmals,
um der "Problematik" Multithreading zu entgehen, hab ich jetzt die zeitintensive Berechnungen, also Teile meines Programms "ausgelagert" (ok, das ist jetzt nicht ganz richtig...aber nun gut), genauer gesagt, die Berechnungen werden ausgeführt, während ein "modales Dialogfeld" geöffnet ist...
Ich habe mich hierfür an einer Vorlage aus einem Programmierbuch orientiert ("Inside Visual C++ 6.0"). Im folgenden der Code, der nach Drücken eines Start-Buttons gedrückt wird:

C++:

...
void CComputeDlg::OnStart()
{
   MSG message;
   m_nTimer=SetTimer(1,100,NULL);
   ASSERT(m_nTimer!=0);
   GetDlgItem(IDC_START)->EnableWindow(TRUE);
   MessageBeep(-1);
   for(i=0; i<800000; i++)
   {
       ........
       for(ii=0; ii<32; ii++)
       {
          bit_sample = 1 << ii;
          ........      
       }
        //nach jedem Zyklus STOP möglich
       if (::PeekMessage(&message,NULL,0,0,PM_REMOVE))
      {
    ::TranslateMessage(&message);
    ::DispatchMessage(&message);
      }
}


Nun, in der Vorlage ist für die innere Schleife, die laut Buch ja "CPU-Zyklen" verbrauchen soll, als Laufvariable ii folgendes vorgesehen:

C++:
volatile int ii;


Ich hab mal in der Hilfe nachgeschaut:

Code:
"volatile:
The volatile keyword is a type qualifier used to declare that an object can be modified in the program by something other than statements, such as the operating system, the hardware, or a concurrently executing thread.
Objects declared as volatile are not used in optimizations because their value can change at any time. The system always reads the current value of a volatile object at the point it is requested, even if the previous instruction asked for a value from the same object. Also, the value of the object is written immediately on assignment.
One use of the volatile qualifier is to provide access to memory locations used by asynchronous processes such as interrupt handlers."



Gut, damit konnte ich jetzt auch nicht viel anfangen...Brauche ich jetzt "volatile", oder nicht???
--
__________________________________
Unwissenheit ist vorläufig- Dummheit für immer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: