Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

About using "Critical Section"

Posted on 1997-07-03
2
Medium Priority
?
233 Views
Last Modified: 2010-08-05
Hi,
   I want to block the system during my function using Critical Section.
   How can I use it to my function?
====================================================
void CLogFile::WriteToLog( const CString& strMsg )
{      TRY
      {
       oOut.Open(FileName.. );
       oOut.SeekToEnd();
       oOut.WriteString( strOut );
       oOut.Close();
      }
      CATCH( CFileException, e )
      {
#if defined ( _DEBUG )
      TRACE( CString( "Could not write to file " ));
#endif
      }
      END_CATCH
}
=========================================================
Thanks!!
         
0
Comment
Question by:jpchen
  • 2
2 Comments
 
LVL 2

Accepted Solution

by:
sprinkmeier earned 50 total points
ID: 1164275
If you create an instance if the ICritSect class, then you have created a critical section, ie.

foo()
{
  .....code....
  {
    ICritSect crit;
    // this code runns 'critical'
    .....
  }
  // end ccritical section
  ...
}


However, I'm not sure this is what you want. Critical secitons only disable other threads in a given progcess, I'm not sure of how to disable "the system" (I assume you mean the kernel).
You could try boosting your priority to 'slow-down' the rest of the system (yuck!), or a shared mutex sem to stop cooperating processes.
BEWARE!! MUTEX semaphores and critical sections do not mix well, all but the most trivial examples are prone to all sorts of deadlocks.

(tell me if you need the C API calls for the above. bit rusty on those...)
0
 
LVL 2

Expert Comment

by:sprinkmeier
ID: 1164276
Me again...
You did not specify a platform/OS, and I assumed OS/2 (cos that's what I know).

0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Unlike C#, C++ doesn't have native support for sealing classes (so they cannot be sub-classed). At the cost of a virtual base class pointer it is possible to implement a pseudo sealing mechanism The trick is to virtually inherit from a base class…
C++ Properties One feature missing from standard C++ that you will find in many other Object Oriented Programming languages is something called a Property (http://www.experts-exchange.com/Programming/Languages/CPP/A_3912-Object-Properties-in-C.ht…
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.
Suggested Courses

580 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question