public inbox for pthreads-win32@sourceware.org
 help / color / mirror / Atom feed
* patch for sched_yield()
@ 2007-08-22 23:17 Virgilio Alexandre Fornazin
  2007-09-29 22:29 ` Bossom, John
  0 siblings, 1 reply; 2+ messages in thread
From: Virgilio Alexandre Fornazin @ 2007-08-22 23:17 UTC (permalink / raw)
  To: pthreads-win32

Hi

I did a change in sched_yield() to support
multi-processor systems after checking the OS (NT
style oses). I managed to compile it under VS2005 SP1.
I'm putting the code here to share with pthreads
project.

I changed the implementation from:

{
  Sleep (0);

  return 0;
}


To:

{
  static OSVERSIONINFO vs = {0};

  if (vs.dwOSVersionInfoSize == 0)
  {
    vs.dwOSVersionInfoSize = sizeof(vs);
  
    GetVersionEx(&vs);
  }

  if (vs.dwPlatformId == VER_PLATFORM_WIN32_NT)
  {
    SwitchToThread ();
  }
  else
  {
    Sleep (0);
  }

  return 0;
}

I saw in another mailing list that Sleep(0) sometimes
doesn't yield the thread and performs nothing on some
Windows versions.

I hope this help somebody and could be integrated to
main code after more testing with other cpu/configurations.


      Flickr agora em português. Você clica, todo mundo vê.
http://www.flickr.com.br/

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2007-08-22 23:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-08-22 23:17 patch for sched_yield() Virgilio Alexandre Fornazin
2007-09-29 22:29 ` Bossom, John

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).