f



Why does waiting on a condition in one thread activate it for another thread?

I have two threads waiting on the same condition, however, the second
thread that waits on the condition always returns immediately as if the
condition has been signaled.  Why should this be?  Take the example
code below; both thread1 and thread2 are waiting on cond3, however, the
first thread to wait for cond3 successfully blocks and waits, but the
second thread to wait for cond3 returns immediately.  I'm open to
suggestions as to how to fix this.

#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#include <stdio.h>

void thread1(void *const user_data);
void thread2(void *const user_data);
void thread3(void *const user_data);

pthread_mutex_t mutex1, mutex2, mutex3;
pthread_cond_t cond1, cond2, cond3;
pthread_t pthread1, pthread2, pthread3;

int main()
{
  void *val1, *val2, *val3;
  pthread_mutex_init(&mutex1, NULL);
  pthread_mutex_init(&mutex2, NULL);
  pthread_mutex_init(&mutex3, NULL);
  pthread_cond_init(&cond1, NULL);
  pthread_cond_init(&cond2, NULL);
  pthread_cond_init(&cond3, NULL);

  pthread_create(&pthread1, NULL, (void*)thread1, NULL);
  pthread_create(&pthread2, NULL, (void*)thread2, NULL);

  /* sleep here so that the other two threads stabilize */
  sleep(10);

  /* have the third thread start 'asynchronously' */
  pthread_create(&pthread3, NULL, (void*)thread3, NULL);

  pthread_join(pthread1, &val1);
  pthread_join(pthread2, &val2);
  pthread_join(pthread3, &val3);

  return 0;
}

void thread1(void *const user_data)
{
  printf("thread1 has been called\n");
  printf("thread1 locking mutex1\n");
  pthread_mutex_lock(&mutex1);
  printf("thread1 is waiting on cond3\n");
  pthread_cond_wait(&cond3, &mutex1);
  printf("thread1 has received cond3\n");
  printf("thread1 is signaling cond1\n");
  pthread_cond_signal(&cond1);
  printf("thread1 is returning\n");
  pthread_exit(NULL);
}

void thread2(void *const user_data)
{
  printf("thread2 has been called\n");
  printf("thread2 locking mutex2\n");
  pthread_mutex_lock(&mutex2);
  printf("thread2 is waiting on cond3\n");
  pthread_cond_wait(&cond3, &mutex2);
  printf("thread2 has received cond3\n");
  printf("thread2 is signaling cond2\n");
  pthread_cond_signal(&cond2);
  printf("thread2 is returning\n");
  pthread_exit(NULL);
}

void thread3(void *const user_data)
{
  printf("thread3 has been called\n");
  printf("thread3 locking mutex1\n");
  pthread_mutex_lock(&mutex1);
  printf("thread3 locking mutex2\n");
  pthread_mutex_lock(&mutex2);
  printf("thread3 is broadcasting cond3\n");
  pthread_cond_broadcast(&cond3);
  printf("thread3 is locking mutex3\n");
  pthread_mutex_lock(&mutex3);
  printf("thread3 is waiting for cond1\n");
  pthread_cond_wait(&cond1, &mutex1);
  printf("thread3 has received cond1\n");
  printf("thread3 is waiting for cond2\n");
  pthread_cond_wait(&cond2, &mutex2);
  printf("thread3 has received cond2\n");
  printf("thread3 is unlocking mutex1\n");
  pthread_mutex_unlock(&mutex1);
  printf("thread3 is unlocking mutex2\n");
  pthread_mutex_unlock(&mutex2);
  printf("thread3 is unlocking mutex3\n");
  pthread_mutex_unlock(&mutex3);
  printf("thread3 is returning\n");
  pthread_exit(NULL);
}

0
tsldadam
1/17/2007 3:55:34 AM
comp.programming.threads 4878 articles. 1 followers. Post Follow

3 Replies
281 Views

Similar Articles

[PageSpeed] 44

In article <1169006134.114760.319920@11g2000cwr.googlegroups.com>,
tsldadam <adamdelisse@hotmail.com> wrote:

% I have two threads waiting on the same condition, however, the second
% thread that waits on the condition always returns immediately as if the
% condition has been signaled.  Why should this be?  Take the example

The trouble is that you're using the condition variable incorrectly.
condvars are purely a signalling mechanism. They don't maintain state.
They also don't guarantee to wait until they are signalled. A cond wait
is supposed to follow this form:
 lock
 while need-to-wait
    wait
 screw around
 unlock

Also, here's a quote from SUSv3

 The effect of using more than one mutex for concurrent pthread_cond_timedwait()
 or pthread_cond_wait() operations on the same condition variable is undefined;
 that is, a condition variable becomes bound to a unique mutex when a thread
 waits on the condition variable, and this (dynamic) binding shall end when
 the wait returns.


[...]

% pthread_mutex_t mutex1, mutex2, mutex3;
% pthread_cond_t cond1, cond2, cond3;
% pthread_t pthread1, pthread2, pthread3;
  int predicate[4];

[...]

%   pthread_cond_init(&cond2, NULL);
%   pthread_cond_init(&cond3, NULL);
    predicate[1] = predicate[2] = predicate[3] = 1;

[...]
% void thread1(void *const user_data)
% {
%   printf("thread1 has been called\n");
    printf("thread1 locking mutex3\n");
    pthread_mutex_lock(&mutex3);
    while (predicate[3]) {
%      printf("thread1 is waiting on cond3\n");
       pthread_cond_wait(&cond3, &mutex3);
    }
    pthread_mutex_unlock(&mutex3);
%   printf("thread1 has received cond3\n");
%   printf("thread1 is signaling cond1\n");
    pthread_mutex_lock(&mutex1);
    predicate[1] = 0;
    pthread_mutex_unlock(&mutex1);
%   pthread_cond_signal(&cond1);
%   printf("thread1 is returning\n");
%   pthread_exit(NULL);
% }
% 
% void thread2(void *const user_data)
% {
%   printf("thread2 has been called\n");
    printf("thread2 locking mutex3\n");
    pthread_mutex_lock(&mutex3);
    while (predicate[3]) {
       printf("thread2 is waiting on cond3\n");
       pthread_cond_wait(&cond3, &mutex3);
    }
    pthread_mutex_unlock(&mutex3);
%   printf("thread2 has received cond3\n");
%   printf("thread2 is signaling cond2\n");
    pthread_mutex_lock(&mutex2);
    predicate[2] = 0;
    pthread_mutex_unlock(&mutex2);
%   pthread_cond_signal(&cond2);
%   printf("thread2 is returning\n");
%   pthread_exit(NULL);
% }
% 
% void thread3(void *const user_data)
% {
%   printf("thread3 has been called\n");
%   printf("thread3 is broadcasting cond3\n");
    pthread_mutex_lock(&mutex3);
    predicate[3] = 0;
    pthread_mutex_unlock(&mutex3);
%   pthread_cond_broadcast(&cond3);
    printf("thread3 is locking mutex1\n");
    pthread_mutex_lock(&mutex1);
    while (predicate[1]) {
%      printf("thread3 is waiting for cond1\n");
%      pthread_cond_wait(&cond1, &mutex1);
    }
    pthread_mutex_unlock(&mutex1);

%   printf("thread3 locking mutex2\n");
%   pthread_mutex_lock(&mutex2);
    while (predicate[2]) {
%      printf("thread3 is waiting for cond2\n");
%      pthread_cond_wait(&cond2, &mutex2);
    }
    pthread_mutex_unlock(&mutex1);
%   printf("thread3 has received cond2\n");
%   printf("thread3 is returning\n");
%   pthread_exit(NULL);
% }
% 


-- 

Patrick TJ McPhee
North York  Canada
ptjm@interlog.com
0
ptjm
1/17/2007 4:57:57 AM
tsldadam wrote:

> void thread1(void *const user_data)
> {
>   printf("thread1 has been called\n");
>   printf("thread1 locking mutex1\n");
>   pthread_mutex_lock(&mutex1);
>   printf("thread1 is waiting on cond3\n");
>   pthread_cond_wait(&cond3, &mutex1);
>   printf("thread1 has received cond3\n");
>   printf("thread1 is signaling cond1\n");
>   pthread_cond_signal(&cond1);
>   printf("thread1 is returning\n");
>   pthread_exit(NULL);
> }
>
> void thread2(void *const user_data)
> {
>   printf("thread2 has been called\n");
>   printf("thread2 locking mutex2\n");
>   pthread_mutex_lock(&mutex2);
>   printf("thread2 is waiting on cond3\n");
>   pthread_cond_wait(&cond3, &mutex2);
>   printf("thread2 has received cond3\n");
>   printf("thread2 is signaling cond2\n");
>   pthread_cond_signal(&cond2);
>   printf("thread2 is returning\n");
>   pthread_exit(NULL);
> }

If you protect the same shared object with two different mutexes, you
do not ensure that the two threads won't conflict for their access to
the object. In this case, thread1 accesses 'cond3' under the protection
of 'mutex1' while thread2 accesses 'cond3' under the protection of
'mutex2' at possibly the same time. This creates a deadly race
condition.

All threads that might otherwise access a shared object at the same
time *must* acquire the *same* mutex. Otherwise, the two threads might
attempt to wait on the condition variable at precisely the same
instant, corrupting the condition variable.

(Other errors in the code indicate that you don't understand what
condition variables are. They are *not* events.)

DS

0
David
1/17/2007 5:17:40 AM
David Schwartz wrote:
> (Other errors in the code indicate that you don't understand what
> condition variables are. They are *not* events.)

Yes, I believe you have hit the nail straight on the head here... I was
assuming they worked like events and that they would hold state.  I
will have to make some modifications in how I think about them, it
seems.

0
tsldadam
1/17/2007 1:49:38 PM
Reply:

Similar Artilces:

thread, threading; how to kill a thread?
Greetings Pythonists; I have limited experience with threaded apps and plenty with old style forked heavyweight multi-processing apps. Using Python 2.3.3 on a Redhat 7.x machine. Wondering if there is a simple way from a main python program to kill a running thread? I see with the 'threading' module the way daemonic threads behave when the main program finishes. But suppose we have a simple thread running a function like; def timedLoop(): while True: time.sleep(10) doSomething() All I am trying to do is stop that thread immediatly from the main program and i...

To thread or not to thread
Hello, I was recently reading an article on threading in python and I came across Global Interpreter Lock,now as a novince in python I was cusrious about 1.Is writing a threaded code in python going to perform well than a normal python code.If so on what basis can it performance be measured. 2.Is writing a threaded code in python better than a code written in C/C++ using PTHREADS. If someone can comment on these questions, it would be great. On 2005-07-28, Sidd <iamsidd@gmail.com> wrote: > I was recently reading an article on threading in python and I > came across Glo...

Thread or threads.
thinking of writing a perl script with concurrent abilities. which Module is better 'Thread' or 'threads' ? thx. On Mon, 30 Jun 2008 05:24:19 -0700 (PDT), nadav <nadavh@gmail.com> wrote: >thinking of writing a perl script with concurrent abilities. >which Module is better 'Thread' or 'threads' ? > >thx. Thread (capital T) is obsolete. -- I'm not really a human, but I play one on earth. http://zentara.net/CandyGram_for_Mongo.html nadav wrote: > thinking of writing a perl script with concurrent abilities. > which Module is bette...

To thread or not to thread ?
The threads of discussion about threads have been enlightening in exposing some of the low level issues which could possibly affect MT code and, more importantly, served also to bring awareness to the unsuspecting (me for one). It leaves me wondering if writing MT code is even to be pursued at this point in time, or at least "where's the guidebook to read is that will facilitate the writing of MT code without engaging compiler-level gotchas?". Can the low level issues be dealt with in the short term by following certain rules, perhaps platform-specific ones, or is robust MT code ...

Thread or not thread
Hello, i read some document that say enabling threads (in Bind 9.x compiling), giv= e less performance than disabling threads, in a 32 bit environment (with 2 = cpu), using Bind DLZ (with Postgresql DB). I found something here: http://zaphods.net/~zaphodb/high-performance-bind9.html Do you suggest enabling threads with DLZ or not? Thank you! Francesco= ...

About threading.Thread
Hello guys: I have an question on threading.Thread My code is here: File1: a.py import threading import time def hello(): while True: print('hello') threads =3D threading.enumerate() for thread in threads: print(thread.getName()) time.sleep(3) def fun(): a =3D threading.Thread(target=3Dhello(), name=3D'hello') print("a file: I won't display!") a.start() File2: b.py import time from a import fun fun() print("b file: I won't display!") When I run: python b.py (python version: 2.7.6, 3.3.5, 3.4....

To thread or not to thread
My app needs to check a number of things on the web. This can be done in the background. I use idHTTP to pull data in. This process is broken down into small parts and the subroutinen are called in the OnIdle handler of the main form. I notice that sometimes idHTTP needs a considerable time to build the connection/fetch the data and the application doesn't repond to user actions during such periods. To cope with this I have now implemented the web data fetching in a thread with priority tpIdle. I think the problem of non-response has gone, ut it is difficult to test. Am...

threading a thread
I have a program written in Python that checks a class B network (65536 hosts) for web servers. It does a simple TCP socket connect to port 80 and times out after a certain periods of time. The program is threaded and can do all of the hosts in about 15 minutes or so. I'd like to make it so that I can check for other open ports (instead of just port 80) and I'd like to thread the port checks as well. Right now I'm just prototyping and the threaded hosts portion works very well for my needs. I'd just like to add a threaded ports check and wanted to know if anyone had don...

thread or threads ?
For some time now, I've been checking out tcl, tk, tls and threads from sourceforge. Recently, my cvs went berserk (I passed it a subdirectory with trailing slash for update, but I'm not sure if that was really the reason), and instead of updating just that directory, it checked out all modules. Among these modules was "thread". I checked for what was more recent, and it looked like thread had more recent checkins than threads. But "thread" doesn't even configure: > ../../../cvs/sourceforge/thread/configure checking for correct TEA configuration... ok (T...

can one thread change varible of another thread?
HI, 1)I have some identical threads, say thread 1 has variable a , thread 2 has variable b , and so on,. . is it possible for thread 2 to modify variable a of thread1? 2)if it doesnt work, then, I try to use a global array that contains array[0]= a,for thread1 array[1]=b, for thread2 array[2]=c, for thread3. however, i encountered a problem when using mutex lock,thread 1 try to modify array[2],, then, i have to unlock array[2], so thread 2 lock and access array[0] . is there any way so array[0] can be accessed by thread 2, array[1] can be accessed by thread3, and array[2] can be accessed by thread 1 (some how randomly), all three of them happen at the same time and not need to wait for the locks.. also, it gives a problem to create the lock, since thread 1,2,3 are identical, they are the same piece of function code. for instance, foo(int *vari) { lock modify array[x] for x corresponding to values from other thread rather than this thread unlock } Thank you very much, noelloen wrote: > HI, > > 1)I have some identical threads, say thread 1 has variable a , thread 2 > has variable b , and so on,. . is it possible for thread 2 to modify > variable a of thread1? > Only if the other thread knows where the first thread's variable is. For this to be true, the variables have to either exist before the thread is created and be visible to it, or their address passed between threads. -- Ian Collins. ...

about thread inside another thread
hi , i am new to threads programming. here i have situation where i have to create a thread inside another thread.is it possible to create a thread inside another thread ?..i searched in net. but i could not find.. my first thread : pthread_create( &callThd[thno], &attr, jobSchedule, (void *)thno); inside jobSchedule i need to create a another thread which should call execute2.. pthread_create( &callThd[newthno], &attr, execute2, (void *)newthno); plz help me thank you subbukamatchi@gmail.com wrote: > i am new to threads programming. here i have situation where i > have to create a thread inside another thread.is it possible to create > a thread inside another thread ? When your program starts (i.e. when it enters main()), you already have a thread running, so in other words you always need a thread to start another thread (without a thread, there wouldn't be anything happening). Other than that, whether you can start other threads from any thread other than the main thread depends on the threading library you use, but seeing that you use the POSIX threading API, that works. If you have any problems with that, you should rather tell us what you do, what happens and what you expect to happen, alongside with a minimal piece of code that demonstrates your problem. Uli -- Questions ? see C++-FAQ Lite: http://parashift.com/c++-faq-lit...

another thread on Python threading
Hi, I've recently been working on an application[1] which does quite a bit of searching through large data structures and string matching, and I was thinking that it would help to put some of this CPU-intensive work in another thread, but of course this won't work because of Python's GIL. There's a lot of past discussion on this, and I want to bring it up again because with the work on Python 3000, I think it is worth trying to take a look at what can be done to address portions of the problem through language changes. Also, the recent hardware trend towards multicore proces...

Passing result from one thread to another thread at the end of execution
Hello:) I wish to know if there is some pattern design that allow passing the result of one executing thread(at the end of the execution) to another thread. And it is possible to pass data between two threads without having a shared variable? event-listener model will it works???? Thanks you very much!!!! Sayoyo "sayoyo" <dontwantspam@yahoo.com> wrote in message news:X15Xb.20447$y07.618092@news20.bellglobal.com... > Hello:) > > I wish to know if there is some pattern design that allow passing the result > of one executing thread(at the end of the execution) t...

Passing result from one thread to another thread at the end of execution
Hello:) I wish to know if there is some pattern design that allow passing the result of one executing thread(at the end of the execution) to another thread. And it is possible to pass data between two threads without having a shared variable? event-listener model will it works???? Thanks you very much!!!! Sayoyo I don't know of any specific pattern, but the logical way would be to create a single class that encapsulates the running of the thread AND the result, e.g. class abstract ThreadWithResult extends Thread { private boolean finished=false; private Object ...

thread::release [thread::id] of main thread
I would like to put this into discussion: In the main thread write: package re Thread thread::release [thread::id] Shall a scripting language take precautions for making such errors and throw an error? or shall it simply do what the user requests? I already mentioned this at sourceforge but didn't write an explicit bug-report. thx ...

Passing result from one thread to another thread at the end of execution
Hello:) I wish to know if there is some pattern design that allow passing the result of one executing thread(at the end of the execution) to another thread. And it is possible to pass data between two threads without having a shared variable? event-listener model will it works???? Thanks you very much!!!! Sayoyo ...

Threads and thread safety
I don't know a thing about thread programming and multithreaded jobs. I do know that when I execute some CL commands from a SQL stored procedure or function, I sometimes get warnings about thread safety. I wanted a way to get a list of objects as a table returned from a table function. In particular, I wanted a list of all subsystems on the system. I coded this table function: create function get_all_sbsd () returns table (sbs char(10), sbs_lib char(10)) language sql modifies sql data begin call qsys2.qcmdexc ('dspobjd *all/*all *sbsd output(*outfile) outfile(qtemp/sbs)'); return (select odobnm, odlbnm from qtemp.sbs); end; It works beautifully, and very fast. HOWEVER... When I look in the job log, I see CPD000D in the job log reading: "Command *LIBL/DSPOBJD not safe for a multithreaded job." In the second level text, after repeating the basic warning, it reads, "Action 2 will be taken. Possible actions are: 2 -- Processing of the command will continue." Why is DSPOBJD not threadsafe, and what does that even mean (see first sentence above)? As I said, the command operates as expected and the result set is correct. On Tuesday, 16 February 2016 15:24:33 UTC, Jonathan Ball wrote: > I don't know a thing about thread programming and multithreaded jobs. I= =20 > do know that when I execute some CL commands from a SQL stored p...

threads creating threads ..
Hi, scenario: I create a thread X using pthread_create(). thread X then creates thread Y using pthread_create(). thread X then completes it's operations and returns thus terminating the thread X. question: What happens to thread Y? I need to have thread Y continue to run after thread X has terminated. I haven't coded this yet, just need to know in advance if there is anything i need to do. My application is already threaded using pthreads, this is a modification needed to handle some extra functionaity. I'm using codwarrior 8.3 on mac osX (10.3) and pth...

one producer thread, one consumer thread: mutex needed?
Hello, I have an application that essentially consists of two threads doing their things. One thread is a producer, and pushes bytes (of a struct) into a pipe, and another is a consumer that simply checks the pipe at regular intervals reads out the bytes. If the consumer extracts bytes and sees that it's not enough to recast to the struct, it caches it and waits for more bytes in the pipe. My question is: Do I still need to maintain a mutex that is locked whenever a thread writes or reads? As I mentioned already, I have only one reader and one writer, and the reader checks if it has eno...

threads without threads
Hello, I have a counter loop which actually executes in a different thread. The thread is there to check for a connection time out. However due to some limitations, I cannot use pthreads or any OS dependant components (my code should run on both windows and linux). I have to relegiously stick on to ANSIC standard. Does ANSI C provide any inherent function which could accomplish what I intend to do. Or putting it otherway, how can I just deviate from my direct execution path and just return to it after a stipulated time has elapsed. ~saraca sindica@gmail.com scribbled the following: > Hel...

Canceling Threads from other Threads
Hey, I am using Posix Threads, and I am trying to cancel one thread from another. My Main spawns 2 tasks. Task 1 after a few iterations calls: if(pthread_cancel(ptrThread2)==ESRCH) printf("Thread Canceling Failed \n"); where thread2's creation looks like: TaskStart(ptrThread2,ptrThreadAttr2, taskHandler2); and in the thread of ptrThread2 I have the code: int old_cancel_state, old_cancel_type; pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &old_cancel_state); pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &old_cancel_type); I declare pthread_t ptrThread2; u...

Thread within a thread
Is it possible to call a thread (pthread) from within a thread invocation ? If I correctly pthread_join() the new thread from the calling thread, does it make good design sense ? On May 14, 10:33=A0pm, Raseel <raseelbha...@gmail.com> wrote: > Is it possible to call a thread (pthread) from within a thread > invocation ? There is no other way to do it. If code is running, it's a thread that's running it. > If I correctly pthread_join() the new thread from the calling thread, > does it make good design sense ? You can call 'pthread_join' from any thread that wants to wait for any other non-detached thread to complete. DS "David Schwartz" <davids@webmaster.com> wrote in message news:2ec36658-cce9-4b00-afe3-2a4a38d03248@u9g2000pre.googlegroups.com... On May 14, 10:33 pm, Raseel <raseelbha...@gmail.com> wrote: > > Is it possible to call a thread (pthread) from within a thread > > invocation ? > There is no other way to do it. If code is running, it's a thread > that's running it. ;^) > > If I correctly pthread_join() the new thread from the calling thread, > > does it make good design sense ? > You can call 'pthread_join' from any thread that wants to wait for any > other non-detached thread to complete. "Raseel" <raseelbhagat@gmail.com> wrote in message news:5b11295d-3097-4e35-9696-8556252971f4@d1...

Sub thread and Thread ?
Hi, all: Can I build 2 sub threads in another thread? which means: main call thread A ; Thread A call thread A1; call Thread A2; ; Thanks for any comments. bin YE yezi wrote: > Hi, all: > > Can I build 2 sub threads in another thread? which means: If in the pseudo code below 'call' means 'create' then yes, most thread APIs allow threads to create threads. > main > > call thread A > > ; > > Thread A > call thread A1; > call Thread A2; > > ; > > Thanks for any comments. > > > bin YE -- Phil Frisbie, Jr. Hawk Software http://www.hawksoft.com yezi wrote: > > Can I build 2 sub threads in another thread? which means: > > main > > call thread A > > ; > > Thread A > call thread A1; > call Thread A2; > > ; > > Thanks for any comments. Any thread, including the main thread (which is just "a thread" to the system), can create threads and issue synchronization and scheduling operations. However, there's no such thing as "subthreads". All threads are equal, and there's no hierarchy of parent/child as there is for processes. Unlike fork/wait, no matter which thread creates a thread, any other thread with access to the thread's ID can join with the created thread. -- Dave Butenhof, David.B...

nuby threading on threads
Hi Friends, This is my first touch on threads, so be gentle pls :-) I am trying to execute loop a command by using threads (tested them on windows and I find them much faster than doing one at a time :). However, there are some commands that execuite very long time and are memory intensive, so I want that I only execute 10 threads at a time. eg. LIMIT= 10 tlist = [] loop { if tlist.size< LIMIT tlist << Thread.new { p "test" } else sleep 5 end } Am, I right? Of course, I'm wrong since I tested it; tlist size is steady at LIMIT. When ...

Web resources about - Why does waiting on a condition in one thread activate it for another thread? - comp.programming.threads

Conditions
Attractive ultra-simple new weather app for the iPhone, by Jake Marsh.

Precancerous condition - Wikipedia, the free encyclopedia
A precancerous condition (or premalignant condition ) is a generalized state associated with an increased risk of cancer . If left untreated, ...

Glider pilot in stable condition after ‘crash landing’ at Waikerie airfield in the Riverland - AdelaideNow ...
A MAN aged 59 was flown to hospital in a serious condition after his glider crash landed in the Riverland on Saturday afternoon.

Dangerous surf conditions as effects of Cyclone Winston come to NSW beaches, forcing closures - DailyTelegraph ...
ABOUT 80 per cent of NSW beaches are closed today because of dangerous surf conditions brought on by the effects of Cyclone Winston.

Sweltering conditions in Sydney to linger well past sunset
Sydney will likely come close to notching its hottest day this late in the summer for 12 years - and there won't be much early relief.

Dr Joe Kosterich: Being human is not a medical condition
Human emotion is not a disease, despite our lives becoming increasingly medicalised.

I just voted for Bernie…on the condition that he lose
... than Hillary Clinton. I don’t think I could safely make either of those arguments, which is why I’m only voting for Bernie Sanders on the condition ...

Trump Releases Health Care Plan, Promises To Reinstate Pre-Existing Conditions
... sort of on how he plans to get rid of the Affordable Care Act. Remember all that crap in the last debate/town hall about pre-existing conditions ...

This week at progressive state blogs: Poultry workers still face dangerous conditions; sexist Kasich
This week in progressive state blogs is designed specifically to focus attention on the writing and analysis of people focused on their home ...

Conditions of 2 Kalamazoo-Area Shooting Victims Upgraded
Officials say the conditions of two people who survived the Kalamazoo-area shootings have been upgraded to fair

Resources last updated: 3/3/2016 7:43:29 AM