[fpc-pascal] Use sleep in thread

Henry Vermaak henry.vermaak at gmail.com
Wed Feb 25 16:18:40 CET 2015


On Wed, Feb 25, 2015 at 10:41:58PM +0800, Xiangrong Fang wrote:
> Hi All,
> 
> Can I use Sleep() in a thread to give up cpu time to other threads running
> at the same time, so as to adjust the relative "niceness" of a group of
> workers working on the same subject (in which each thread take part of the
> whole task).

Use ThreadSwitch to yield CPU.  Having said that, it may be better to
look into platform specific thread scheduling rather than trying to do
it yourself.  For instance, with pthreads, you can do this:

procedure TYourThread.SetPriority;
{$ifdef unix}
var
	sp: sched_param;
begin
	sp.sched_priority := 10;
	{ SCHED_FIFO = 1 }
	pthread_setschedparam(ThreadID, 1, @sp);
end;
{$else}
begin
	// TODO
end;
{$endif}

Henry



More information about the fpc-pascal mailing list