Sponsored Content
Operating Systems Solaris Solaris 8 -> Solaris 10 = problem :/ Post 302516535 by Loic Domaigne on Sunday 24th of April 2011 02:54:46 AM
Old 04-24-2011
Hi Tinkh,

My guess: This might also not work on Solaris 8, if you set the concurrency level to at least 2.
Code:
   if (Status2)     {
      Status2=0;
      pthread_cond_wait(&synchroA,&mutexA);
   }
   else {
      pthread_cond_signal(&synchroB);
      Status2=1;
   }

Should'nt it be Status1=1 after the pthread_cond_wait() ?

HTH, Loïc
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

problem in solaris 8

hi, I have install solaris 8 7/01 in ULTRA 10,but when I type commands such like "admintool" and "swtool",there will be a error messege: warning:Missing charsets in string to fontset conversion arithmetic exception - core dumped I dont know what these mean,can anyone help me?thank... (1 Reply)
Discussion started by: fuqiang1976
1 Replies

2. UNIX for Dummies Questions & Answers

Problem with Solaris 9

I'm trying to install this on my pc at home but the thing is after I get to the option screen that ask where I want to boot solaris from: hard drive cd interface after I choose the cd option, it begins reading from the CD then it asks me if I want the installation to be interactive or... (3 Replies)
Discussion started by: TRUEST
3 Replies

3. Solaris

Solaris 10 Jumpstart Problem

Hi, I build a jumpstart server with a running dhcp server. I already managed to install a x86 client via network. But my sparc clients aren't still working. When booting via network I get the following message: Timeout waiting for ARP/RARP packet I ran "snoop" on the server: client2 ->... (1 Reply)
Discussion started by: Jay_Fisi
1 Replies

4. Solaris

sendmail problem on Solaris 10

Hi All, I am facing problem while sending mail using "mail" & "sendmail" commands from my Solaris 10 system. When I send the mail, it moves it to dead.letter & generates following error messages in /var/log/syslog file; Feb 22 14:20:14 ppip1n sendmail: l1M8oDEE008601:... (10 Replies)
Discussion started by: jumadhiya
10 Replies

5. Solaris

Solaris 10 - X Problem

I can't get a remote X session to display on my Solaris 10 box. I can get it to work if I launch X on my local machine (like /usr/openwin/bin/xclock) so I know X itself is working correctly. The problem is, when I am on a remote host, I set the variable, and run /usr/openwin/bin/xclock, and it... (5 Replies)
Discussion started by: pc9456
5 Replies

6. Solaris

Solaris 10 LU problem

I have a problem with export/home after doing the upgrade. The df -k shows /export and /export/home both being mounted on the same slice. Yes, both are in the vfstab file too. When I reformatted the disk for the upgrade, I added 10gb to the /export partition so that is the one I want to end up... (3 Replies)
Discussion started by: zeekstern
3 Replies

7. Solaris

Solaris Problem

I have a SUnfire V120 solaris 10 machine I have recently added memory to. After installation of the RAM, powering back on, the machine did not come back on the network. Consoled into the machine, the routing table has been wiped out completely and I had to reconfigure the IP address. I got the IP... (12 Replies)
Discussion started by: lnxjenn
12 Replies

8. Solaris

Problem with Solaris 11.1 vm

Hi! I have the following problem: I tried to create a Solaris 11.1 virtual machine in the latest VMware Workstation (10.0.1) and despite my efforts it is impossible to make the Tools running. During the installation I receive the following messages: root@solaris:... (0 Replies)
Discussion started by: apollookc
0 Replies

9. Solaris

T3-2 and Solaris 10 Problem

Hi Guys, I got a unique (and wierd) problem with trying to install Solaris 10 off of a DVD on a T3-2. You boot cdrom, it goes through the questions and then when it comes to ask you if you want to install using nfs or dvd if you pick dvd it comes up with an error - ERROR: The disc you inserted... (8 Replies)
Discussion started by: callmebob
8 Replies

10. Solaris

Solaris 10 problem - need help

I installed Solaris 10 on UltraSparc T5120. The machine shows yellow triagle ! LED. I got endless Warnings on console connection WARNING: /pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/usb@0,2/hub@4/device@4/storage@0/disk@0,0 (sd6): Error for Command: read(10) Error Level: Fatal... (9 Replies)
Discussion started by: gping
9 Replies
PTHREAD_COND_BROADCAST(P)				     POSIX Programmer's Manual					 PTHREAD_COND_BROADCAST(P)

NAME
pthread_cond_broadcast, pthread_cond_signal - broadcast or signal a condition SYNOPSIS
#include <pthread.h> int pthread_cond_broadcast(pthread_cond_t *cond); int pthread_cond_signal(pthread_cond_t *cond); DESCRIPTION
These functions shall unblock threads blocked on a condition variable. The pthread_cond_broadcast() function shall unblock all threads currently blocked on the specified condition variable cond. The pthread_cond_signal() function shall unblock at least one of the threads that are blocked on the specified condition variable cond (if any threads are blocked on cond). If more than one thread is blocked on a condition variable, the scheduling policy shall determine the order in which threads are unblocked. When each thread unblocked as a result of a pthread_cond_broadcast() or pthread_cond_signal() returns from its call to pthread_cond_wait() or pthread_cond_timedwait(), the thread shall own the mutex with which it called pthread_cond_wait() or pthread_cond_timedwait(). The thread(s) that are unblocked shall contend for the mutex according to the scheduling policy (if applicable), and as if each had called pthread_mutex_lock(). The pthread_cond_broadcast() or pthread_cond_signal() functions may be called by a thread whether or not it currently owns the mutex that threads calling pthread_cond_wait() or pthread_cond_timedwait() have associated with the condition variable during their waits; however, if predictable scheduling behavior is required, then that mutex shall be locked by the thread calling pthread_cond_broadcast() or pthread_cond_signal(). The pthread_cond_broadcast() and pthread_cond_signal() functions shall have no effect if there are no threads currently blocked on cond. RETURN VALUE
If successful, the pthread_cond_broadcast() and pthread_cond_signal() functions shall return zero; otherwise, an error number shall be returned to indicate the error. ERRORS
The pthread_cond_broadcast() and pthread_cond_signal() function may fail if: EINVAL The value cond does not refer to an initialized condition variable. These functions shall not return an error code of [EINTR]. The following sections are informative. EXAMPLES
None. APPLICATION USAGE
The pthread_cond_broadcast() function is used whenever the shared-variable state has been changed in a way that more than one thread can proceed with its task. Consider a single producer/multiple consumer problem, where the producer can insert multiple items on a list that is accessed one item at a time by the consumers. By calling the pthread_cond_broadcast() function, the producer would notify all consumers that might be waiting, and thereby the application would receive more throughput on a multi-processor. In addition, pthread_cond_broad- cast() makes it easier to implement a read-write lock. The pthread_cond_broadcast() function is needed in order to wake up all waiting readers when a writer releases its lock. Finally, the two-phase commit algorithm can use this broadcast function to notify all clients of an impending transaction commit. It is not safe to use the pthread_cond_signal() function in a signal handler that is invoked asynchronously. Even if it were safe, there would still be a race between the test of the Boolean pthread_cond_wait() that could not be efficiently eliminated. Mutexes and condition variables are thus not suitable for releasing a waiting thread by signaling from code running in a signal handler. RATIONALE
Multiple Awakenings by Condition Signal On a multi-processor, it may be impossible for an implementation of pthread_cond_signal() to avoid the unblocking of more than one thread blocked on a condition variable. For example, consider the following partial implementation of pthread_cond_wait() and pthread_cond_sig- nal(), executed by two threads in the order given. One thread is trying to wait on the condition variable, another is concurrently execut- ing pthread_cond_signal(), while a third thread is already waiting. pthread_cond_wait(mutex, cond): value = cond->value; /* 1 */ pthread_mutex_unlock(mutex); /* 2 */ pthread_mutex_lock(cond->mutex); /* 10 */ if (value == cond->value) { /* 11 */ me->next_cond = cond->waiter; cond->waiter = me; pthread_mutex_unlock(cond->mutex); unable_to_run(me); } else pthread_mutex_unlock(cond->mutex); /* 12 */ pthread_mutex_lock(mutex); /* 13 */ pthread_cond_signal(cond): pthread_mutex_lock(cond->mutex); /* 3 */ cond->value++; /* 4 */ if (cond->waiter) { /* 5 */ sleeper = cond->waiter; /* 6 */ cond->waiter = sleeper->next_cond; /* 7 */ able_to_run(sleeper); /* 8 */ } pthread_mutex_unlock(cond->mutex); /* 9 */ The effect is that more than one thread can return from its call to pthread_cond_wait() or pthread_cond_timedwait() as a result of one call to pthread_cond_signal(). This effect is called "spurious wakeup". Note that the situation is self-correcting in that the number of threads that are so awakened is finite; for example, the next thread to call pthread_cond_wait() after the sequence of events above blocks. While this problem could be resolved, the loss of efficiency for a fringe condition that occurs only rarely is unacceptable, especially given that one has to check the predicate associated with a condition variable anyway. Correcting this problem would unnecessarily reduce the degree of concurrency in this basic building block for all higher-level synchronization operations. An added benefit of allowing spurious wakeups is that applications are forced to code a predicate-testing-loop around the condition wait. This also makes the application tolerate superfluous condition broadcasts or signals on the same condition variable that may be coded in some other part of the application. The resulting applications are thus more robust. Therefore, IEEE Std 1003.1-2001 explicitly documents that spurious wakeups may occur. FUTURE DIRECTIONS
None. SEE ALSO
pthread_cond_destroy() , pthread_cond_timedwait() , the Base Definitions volume of IEEE Std 1003.1-2001, <pthread.h> COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition, Standard for Information Technol- ogy -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html . IEEE
/The Open Group 2003 PTHREAD_COND_BROADCAST(P)
All times are GMT -4. The time now is 05:31 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy