07-17-2006
why does my program runs in conflicting mode?
my pragram runs with 3 threads, 2 work threads, one main thread. the 2 work threads run with the same mode and the same code. but now, one of the work thread can't work, and it uses the cpu more than 80%, sometimes uses 100% cpu resource. the another work thread work well.
when I viewed the HP perf agent log, it displays that my program's InterestReason is C, the StopReason is SLEEP or SYSTM, the CPU % is 100.53, the RealTm CPU % is 100.04 ,the other CPU % is nearly 0
RealTm CPU % is 100.04 , that's say, my program use the CPU crueltly, but the the StopReason is SLEEP or SYSTM, it seemed that my program is calling sleep or locked by the mutex, I was puzzled with the conflicting information, can you help me?
9 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
I just updated sendmail to the newest version and got into this trouble. Somehow only can root can use sendmail while the other users will simply get "SMTP went away" when using pine or
"can not chdir(/var/spool/mqueue/): Permission denied
Program mode requires special privileges, e.g., root... (1 Reply)
Discussion started by: Micz
1 Replies
2. Shell Programming and Scripting
Hi guys, I had a question last week where I asked how I check from a website hosted on windows if a process is running on on of our unix servers. Vino and Shell Life kindly replied with a perl script:
if qm') -gt 0 ] ; then
echo "Site is up"
else
echo "Site is down."
# start the... (1 Reply)
Discussion started by: drchris
1 Replies
3. UNIX for Advanced & Expert Users
I have a ksh script that executes a program with a predetermined timeout in minutes. If the program takes longer then the timeout then it still completes with a return code of 0. :confused:
I would like to determine how long the program ran. Then if it takes longer than the timeout I would... (7 Replies)
Discussion started by: 2dumb
7 Replies
4. Programming
i am executing following program
int main()
{ char str;
FILE * fp;
int i=0; ... (4 Replies)
Discussion started by: bhavesh.sapra
4 Replies
5. Shell Programming and Scripting
I have a crontab as below:
PATH=/usr/local/sbin:/bin/:..... etc etc
0 8 * * * /home/user/jobs/poll.sh 2>/dev/null 1>/dev/null
Now the script poll.sh is called at correct time and executes.
This is how poll.sh looks like
#!/bin/bash... (2 Replies)
Discussion started by: chakrapani
2 Replies
6. Homework & Coursework Questions
I need help program in C... :create a program that runs two processes linked oven (1 Reply)
Discussion started by: gizmo16
1 Replies
7. Shell Programming and Scripting
Hi all.
Long time!!
Hope you're doing well..
I've stumbled on a peculiar siutaion here, and would expect help from this forum on a clean resolution.
We are running an rm and find command simultaneously from two different Unix sessions of the same user(let's say USER01) and on the same... (3 Replies)
Discussion started by: kumarjt
3 Replies
8. UNIX for Beginners Questions & Answers
Hey guys, I was wondering. When I enter a command in the terminal -wcl for a word count, where is that program located in the kernel? (7 Replies)
Discussion started by: Circuits
7 Replies
9. Shell Programming and Scripting
This bit of code works fine:
egrep -i '^rmcat' /etc/oratab |\
awk -F\: '{print $1}'|\
while read ORACLE_SID
do
But when I modified it, thus:
egrep -v '^#' /etc/oratab |egrep -v '^$' | egrep -v '^listener' \
awk -F\: '{print $1}'|\
while read ORACLE_SID
do (3 Replies)
Discussion started by: edstevens
3 Replies
LEARN ABOUT OSX
wx::thread
Wx::Thread(3) User Contributed Perl Documentation Wx::Thread(3)
NAME
Thread - using wxPerl with threads
SYNOPSIS
# the order of these use()s is important
use threads;
use threads::shared;
use Wx;
my $DONE_EVENT : shared = Wx::NewEventType;
my $worker = threads->create( &work );
# create frames, etc
my $frame = Wx::Frame->new( ... );
EVT_COMMAND( $frame, -1, $DONE_EVENT, &done );
$app->MainLoop;
sub done {
my( $frame, $event ) = @_;
print $event->GetData;
}
sub work {
# ... do stuff, create a shared $result value
my $threvent = new Wx::PlThreadEvent( -1, $DONE_EVENT, $result );
Wx::PostEvent( $frame, $threvent );
}
# event handler
sub OnCreateThread {
# @_ = () is necessary to avoid "Scalars leaked"
my( $self, $event ) = @_; @_ = ();
threads->create( ... );
}
DESCRIPTION
Threaded GUI application are somewhat different from non-GUI threaded applications in that the main thread (which runs the GUI) must never
block. Also, in wxWidgets, no thread other than the main thread can manipulate GUI objects. This leads to a hybrid model where worker
threads must send events to the main thread in order to change the GUI state or signal their termination.
Order of module loading
It's necessary for "use Wx" to happen after <use threads::shared>.
Sending events from worker threads
"Wx::PlThreadEvent" can be used to communicate between worker and GUI threads. The event can carry a shared value between threads.
my $DONE_EVENT : shared = Wx::NewEventType;
sub work {
# ... do some stuff
my $progress = new Wx::PlThreadEvent( -1, $DONE_EVENT, $progress );
Wx::PostEvent( $frame, $progress );
# ... do stuff, create a shared $result value
my $end = new Wx::PlThreadEvent( -1, $DONE_EVENT, $result );
Wx::PostEvent( $frame, $end );
}
The target of the event can be any "Wx::EvtHandler"
Receiving events from worker threads
"Wx::PlThreadEvent" is a command event and can be handled as such. The "->GetData" method can be used to retrieve the shared data
contained inside the event.
my $DONE_EVENT : shared = Wx::NewEventType;
EVT_COMMAND( $frame, -1, $DONE_EVENT, &done );
sub done {
my( $frame, $event ) = @_;
print $event->GetData;
}
Creating new threads
Creating new threads from event handlers works without problems except from a little snag. In order not to trigger a bug in the Perl
interpreter, all event handler that directly or indirectly cause a thread creation must clean @_ before starting the thread.
For example:
sub OnCreateThread {
my( $self, $event ) = @_; @_ = ();
threads->create( ... );
}
failure to do that will cause "scalars leaked" warnings from the Perl interpreter.
perl v5.10.0 2007-04-28 Wx::Thread(3)