We help IT Professionals succeed at work.

About using "Critical Section"

jpchen
jpchen asked
on
Medium Priority
249 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!!
         
Comment
Watch Question

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...)

Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts
Me again...
You did not specify a platform/OS, and I assumed OS/2 (cos that's what I know).

Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.