f



C++ volatile qualified reference and member functions useful?

Andrei Alexandrescu had an interesting article "volatile - Multithreaded 
Programmer's Best Friend" about using the type system and volatile to help 
with thread-safety.
I understand that volatile qualifiying data doesn't help with thread-safety.
But Andrei's idea of "marking" thread-safe interfaces with volatile still 
seems like a good idea to me.

Does anyone have any experience with that technique?  How did it go?

terry 


0
Terry
3/28/2008 7:20:00 AM
comp.programming.threads 4878 articles. 1 followers. Post Follow

9 Replies
486 Views

Similar Articles

[PageSpeed] 17

On 28 B=F8e, 08:20, "Terry G" <tjgol...@netins.net> wrote:
> Does anyone have any experience with that technique?  How did it go?

i've tried to implement and use it with combination of another
article:
http://hillside.net/plop/2005/proceedings/PLoP2005_pbachmann1_0.pdf

it's  handy when you need to protect whole vector with some kind of
lock and
you are tired of writing various forms of locked pimpls etc.  i am
using it for
year or two and still happy with that pattern (many thanks to authors
of
course!).

if i may i'll paste a sample from documentation as it illustrates misc
accesses
to the container.

/**@class   synchronized
 * @brief   synchronize mt-unsafe interface
 *
 *  due to const/volatile qualification and locked_ptr proxy
mechanism
 *  several ways to access underlying _ThreadUnsafeInterface exist:
 *
 *      typedef synchronized<std::list<int>, helpers::rw_mutex>
mt_list_t;
 *
 *      mt_list_t volatile rw_list;                     // RW mt-safe
list<int>
 *      mt_list_t const volatile & ro_list =3D rw_list;   // alias for
RO access
 *
 *  1. automatic generation of read/write locked proxy
 *
 *      rw_list->push_back(1);  // generates locked_ptr, locks for
writing,
 *                              // call push_back, unlock
 *      ro_list->empty();       // generates locked_ptr, locks for
reading,
 *                              // call empty() const, unlock
 *
 *  2. explicit generation of locked proxy (note the -> usage)
 *      ...
 *      {
 *          mt_list_t::lock_const_proxy_t locked =3D
ro_list.mk_lock_const();
 *          std::copy(locked->begin(), locked->end(),
 *                              std::ostream_iterator<int>(std::cout,
"\n"));
 *      } // the read lock is released now
 *
 *  3. unprotected access without the volatile qualifier
 *      mt_list_t tmp;
 *      tmp.push_back(1);
 */
template<class _ThreadUnsafeInterface, class _LockT =3D
SYNCHRONIZED_DEFAULT_LOCK,
         template<class> class _LockingPolicyT =3D
default_locking_policy>
struct synchronized : _ThreadUnsafeInterface { ... };

best regards,
mojmir
0
mojmir
3/28/2008 8:09:27 AM
 *      mt_list_t volatile rw_list;                     // RW mt-safe 
list<int>
 *      mt_list_t const volatile & ro_list = rw_list;   // alias for RO 
access

After reading some discussion, I believe its safer to do it this way.

rw_mutex rw_list_mutex;
mt_list_t hidden_rw_list;
volatile mt_list_t& rw_list; // = hidden_rw_list
volatile const mt_list_t& ro_list; // = hidden_rw_list

It has something to do with not casting away volatile from an actual entity.

terry


0
Terry
3/28/2008 9:04:22 AM
On Mar 28, 9:20=A0am, "Terry G" <tjgol...@netins.net> wrote:
> Andrei Alexandrescu had an interesting article "volatile - Multithreaded
> Programmer's Best Friend" about using the type system and volatile to help=

> with thread-safety.
> I understand that volatile qualifiying data doesn't help with thread-safet=
y.


I believe that the multi-threaded programmer's best friend is a
suitable programming notation. Note that the programming notation is
the tool of thoughts. A suitable multi-threaded programming notation
must facilitate marking the shared resources and allow them to be
accessed inside critical regions only. On the other hand, the
programming notation must allow to handle non-determinism as well.
Most probably it means that Dijkstra's Guarded Commands must be
adapted in some form. Note that Dijkstra's GC is adopted already to
loosely coupled processes (CSP) as well as to tightly coupled ones (DP
and Edison language).

See also

http://groups.google.com/group/comp.programming.threads/msg/b08e3306c10e9042=


Best Regards,
Szabolcs
0
Szabolcs
3/30/2008 10:31:11 PM
On Mar 28, 12:20 am, "Terry G" <tjgol...@netins.net> wrote:
> Andrei Alexandrescu had an interesting article "volatile - Multithreaded
> Programmer's Best Friend" about using the type system and volatile to help
> with thread-safety.
> I understand that volatile qualifiying data doesn't help with thread-safety.
> But Andrei's idea of "marking" thread-safe interfaces with volatile still
> seems like a good idea to me.
>
> Does anyone have any experience with that technique?  How did it go?

I code in C++, where the language has better ways to accomplish this.
I could see how it might be the best of a bad bunch for C. One big
minus with this approach is that it can needlessly limit the
optimizations the compiler might be able to do. If you always pass
pointers to volatile objects around, I guess it won't hurt, but that
seems kind of ungainly.

DS
0
David
4/1/2008 2:57:06 AM
David Schwartz <davids@webmaster.com> writes:

> On Mar 28, 12:20 am, "Terry G" <tjgol...@netins.net> wrote:
>> Andrei Alexandrescu had an interesting article "volatile - Multithreaded
>> Programmer's Best Friend" about using the type system and volatile to help
>> with thread-safety.
>> I understand that volatile qualifiying data doesn't help with thread-safety.
>> But Andrei's idea of "marking" thread-safe interfaces with volatile still
>> seems like a good idea to me.
>>
>> Does anyone have any experience with that technique?  How did it go?
>
> I code in C++, where the language has better ways to accomplish this.
> I could see how it might be the best of a bad bunch for C. One big
> minus with this approach is that it can needlessly limit the
> optimizations the compiler might be able to do. If you always pass
> pointers to volatile objects around, I guess it won't hurt, but that
> seems kind of ungainly.

I guess you haven't read Andrei's article. It is a C++-specific technique to
take advantage of the fact that member functions can be marked "volatile" as
well as "const":

class X
{
public:
    void foo();
    void foo() volatile;
    void foo() const;
    void foo() const volatile;
};

All four overloads are different, and which is selected depends on the
const-ness and volatile-ness of the object.

Andrei's idea is that you can include a mutex in the object, and have the
volatile-qualified member functions lock the mutex on entry, forward to the
unqualified member functions to do the work, and unlock the mutex on exit. If
you then have a volatile-qualified object then you can only call the volatile
member functions, so the mutex is automatically locked. On the other hand, if
you then provide a "locking pointer" which locks the mutex, provides
non-volatile access to the member functions, and then unlocks the mutex when
it is destroyed, then you can use the non-volatile member functions safely,
since the mutex is locked as long as you keep the pointer around.

I think it's a nifty technique, but I've never had a need for it in production
code.

Anthony
-- 
Anthony Williams            | Just Software Solutions Ltd
Custom Software Development | http://www.justsoftwaresolutions.co.uk
Registered in England, Company Number 5478976.
Registered Office: 15 Carrallack Mews, St Just, Cornwall, TR19 7UL
0
Anthony
4/1/2008 11:55:39 AM
Hello.

I have a "very simple" question related to this subject.

Please read the following code:

volatile int x = 1;
start_new_thread_that_will_change_x (&x); // Accepts volatile int*
while (static_cast <int> (x));

OK. That's it :-)

If I try to start thinking like the compiler
I will think following:

1. OK. I have volatile integer x. Hmm, I would like to cash it in the
register but I can't because it is volatile. I will remember its
address.
2. I start new thread.
3a. I start the loop and I will necessary check if x is not null.
I will do it because inside the loop I see x that is type of volatile
int (before casting)
and so it can be changed here (only before casting).

But do the compiler really think so?

I see one more variant:

3b. I cash x and start the loop. Why? Because programmer say me that s/
he don't want me to hold the address.
S/he say "all right, the value can't be changed in the loop" by
casting it to non-volatile.

Please let me know if I miss something.

Does the standard clarify it?

Thanks.

Best regards!
Igor Mikushkin
0
igor
4/3/2008 9:29:19 PM
On Apr 3, 2:29 pm, "igor.mikushkin" <igor.mikush...@gmail.com> wrote:

> 3b. I cash x and start the loop. Why? Because programmer say me that s/
> he don't want me to hold the address.
> S/he say "all right, the value can't be changed in the loop" by
> casting it to non-volatile.

This is correct.

But it really doesn't matter anyway, because "volatile" only stops
compiler optimizations, and there can be other elements in the system
that can (at least in principle) make any optimization the compiler
can make.

DS
0
David
4/4/2008 11:04:56 PM
Dnia 04-04-2008, pi=B1 o godzinie 16:04 -0700, David Schwartz pisze:

> > 3b. I cash x and start the loop. Why? Because programmer say me that s/
> > he don't want me to hold the address.
> > S/he say "all right, the value can't be changed in the loop" by
> > casting it to non-volatile.
>=20
> This is correct.

It is not. static_cast<int>(x) reads a volatile variable, so it can't
be cached. The cast to int doesn't change anything, it happens after
reading the variable.

*const_cast<int *>(&x) would allow caching (but technically it's
undefined behavior I think).

--=20
   __("<         Marcin Kowalczyk
   \__/       qrczak@knm.org.pl
    ^^     http://qrnik.knm.org.pl/~qrczak/

0
Marcin
4/5/2008 8:45:37 AM
Thanks for the responses, both on- and off-list.

Apparently this is taboo, but I'll summarize for the benefit of any lurking 
out there...

Best I can tell, the technique should work well, but nobody suggests doing 
it because volatile is too scary and using an interface that requires a 
locker reference is just as efficient and safe. In a single-threaded 
application, one can just use a null-locker object to make the interface 
happy, but avoid the runtime overhead of locking. Other popular approaches 
are two use a single-threaded object with an external mutex or to used a 
locking policy, ala Loki (also developed by Andrei Alexandrescu).

So the best advice is to avoid using 'volatile' for multithreaded 
programming.

Gurus, did I get that right?

terry

"Terry G" <tjgolubi@netins.net> wrote in message 
news:fsi66u$2ep$1@news.netins.net...
> Andrei Alexandrescu had an interesting article "volatile - Multithreaded 
> Programmer's Best Friend" about using the type system and volatile to help 
> with thread-safety.
> I understand that volatile qualifiying data doesn't help with 
> thread-safety.
> But Andrei's idea of "marking" thread-safe interfaces with volatile still 
> seems like a good idea to me.
>
> Does anyone have any experience with that technique?  How did it go?
>
> terry
>
> 


0
Terry
4/5/2008 8:37:00 PM
Reply:

Similar Artilces:

use of keyword volatile in multi-threaded C++ program
It seems that the keyword "volatile" is used to make sure that threads reading (or writing to) the same data should see a consistent picture of the variable i.e. updates made to the common data should immediately get reflected to other threads that are using it. However I have never faced this issue in y multi-threaded code even though the common variables are not declared volatile. So is this just a matter of coincidence that I have had no runtime issues or is it that the "volatile" keyword is required in some special situations that perhaps my code does not encounter? I w...

Using C functions in a C++ program
A colleague of mine who is a C developer wrote several functions in C which I now need to invoke in my C++ application. This is normally not a problem except that the header file that he wrote contains also several structures and #defines, which I need to use in my C++ application. What is the best way to use the C functions, structures and defines in my code without upsetting the compiler / linker? For the C functions I know I need to use extern "C" { ...}. But how do I get to include the structures and the defines? If I include the header file in my C++ code, then the linker will...

Question Can I use explicit qualifier <C> after member function name of a template class?
Bjarne Stroustrup's "The C++ Language Programming" says at P330: "Within the scope of String<C>, qualification with <C> is redundant for the name of the template itself, so String<C>::String is the name for the constructor. If you prefer, you can be explicit: template<class T> String<C>: String<C> () { /*...*/ }" But in fact, I find I cannot use this 'explicit' form for any member function of a template class with g++ or Comeau. Is it the problem of the compilers or the book? an0 wrote: > Bjarne Stroustrup's "T...

How to pass C++ member function to C function expecting function pointer?
I'm just starting to use C++, and don't want to have to rewrite all of the old C routines that I've been using for 20+ years. One of these is a general purpose function minimizer, which expects to be passed a pointer to the function to be minimized, double func(double p[]) How do I use this to minimize a function defined within a class in C+ +? To be specific, suppose I define the following class, which returns the sum of squared differences between an input vector and a (private) vector called trueParms: class max_func { public: max_func(vector <double> trueParms_) : trueParms(trueParms_) {}; double operator()(double p[]); private: vector <double> trueParms; }; double max_func::operator () (double p[]) { unsigned int i; double temp; double ss; for (i=0, ss=0.0; i< trueParms.size(); i++) { temp = p[i] - trueParms[i]; ss += temp * temp; } return ss; }; In the main code, if I have a vector v containing the values 1.0, 2.0, 3.0, then max_func ff(v); now defines a function ff(x) which returns (x[0] - 1)^2 + (x[1] - 2) ^2+ (x[2] - 3)^2 How do I create a function pointer, say ffpointer, in my C++ code that refers to ff, and which I can pass to my C minimizer? Thanks for any suggestions. Richard Stanton RHS wrote: > How do I create a function pointer, say ffpointer, in my C++ code that > refers to ff, and which I can pass to my C minimizer? ...

EngSim: All Matlab features and functions. 2 to 20 Times Faster than MATLAB. Use the same programming syntax as MATLAB, ANSI C/C++, /C++. Good Graphics.
ENGSIM is an Engineering Simulation & Graphics Library for Microsoft Visual C++. It has all Matlab features and functions. 2 to 20 Times Faster than MATLAB. Very Easy to program. Use the same programming syntax as MATLAB, ANSI C/C++. Graphics Support is Very Good. Support Negative Indexing for Array/Matrix, Complex Array and Complex Matrix. Support Fix-point/Floating-point Communications Engineering and Signal Processing Simulation. Support Statistical Analysis. Support User- Defined Classes. Support User-Graphics Development ...

Pointer to Member Function used in member function
Hi, Would you kindly advise me how to write pointer to member function, used in a member function as shown below: Class A { public: void f(){ void(*k)() = g;} // ok void f1(){ void(*k)() = g1;}// error private: static void g(){} void g1() {} }; g() is a static function and pointer to the funcion can be used in f(), but this is not satisfuctory for my purpose, becasue static g() is not allowed to use non-static member data in the class. I whould like to use pointer to non-static member function in f1(). I do not know how to do so. Thank you for your time. My compiler is MC++6. ...

Can i use malloc function while using DLL created from C program
Hi, I have written a simple program in C , which uses malloc function for allocating memory for the array.When iam calling that DLL using call library function node in labview, it is not giving any output, my doubt is can we use malloc function in C program from which we will create DLL and is called in labview? I am attaching my C code and DLL and also labview file please tell me where i am doing wrong?Thanks &amp; Regards,Vishnu first.zip: http://forums.ni.com/attachments/ni/170/313030/1/first.zip Hi Vishnu, There's no problem using the Malloc function in C and call it as a DLL in...

Passing a C++ object's member function to a C function expecing a function pointer!
Sounds nasty doesn't it!! Well it's kinda what I need to do! I have an external C struct (external to the C++ project/classes etc.) which is wants a function ptr assigned to one of it's members: struct blah { int (func_ptr*) (int a, int b, float c); }; etc... However, my code is in C++ and a wish to assign a non-static member function (I know I can do this) to this struct member! Can this be done!? Some how with pointers or references? What about the STL's mem_func stuff? Can anyone shed some light on this? Cheers Jim James, "James Vanns" <jimv@canterbury.a...

C (functional programming) VS C++ (object oriented programming)
I think I become more and more alone... Everybody tells me that C++ is better, because once a project becomes very large, I should be happy that it has been written in C++ and not C. I'm the only guy thinking that C is a great programming language and that there is no need to program things object oriented. Many people says also that they save more time by programming projects object oriented, but I think its faster to program them in a good structured functional way. What do you think? -- -= Joe Mayo* =- * This is a fake name. Joe Mayo wrote: > I think I become more and more a...

Using C functions in a TSR program
Hi. I'm coding a TSR program using turbo C++ version 3.0. I'm using getvect(), setvect() and keep() functions to do it... i hooked the timer interupt (8h)... in my function i have some C function calls, but they don't work... functions like fopen(), printf(), etc... I already did a search here in the group by the answer but it isn't so clear to me... i have to use fopen() in my program, but when i try to use it, the system hangs... when i try to use printf() the system reboots... and so on... Does anyone can help telling how can i use C functions in this case?? I alre...

Using C++ Member Function with rb_protect
I'm having problems using a C++ member function with rb_protect. Here =20= is the code: class Sandbox { public: Sandbox() { sandbox_ =3D rb_funcall(rb_const_get(rb_cObject, rb_intern=20 ("Sandbox")), rb_intern("safe"), 0); } virtual ~Sandbox() { } VALUE eval(char * code) { int status =3D 0; VALUE val =3D rb_protect(&Sandbox::eval_protect, rb_str_new2(code), &status); if (statu...

volatile keyword for C++ member functions
Hi - I am actually trying to get my feet in multi-threaded C++ programming. While I am aware that the C++ standard does not talk about threads (at least, for now - in C++03) - my question is more about the language / usage rather than any thread specific question. Sorry - if posted my mistake. I understand that in C++ volatile objects ( those non-primitive type instances qualified with 'volatile' ) can actually call only those member functions qualified as volatile . But there is also a construct - const_cast< T *> (p) , that can convert a volatile object pointer to consta...

How to use Lisp function in C++ program ?
Hi, I want to use defined lisp function in C++ program. I have C++ program as below: #include <iostream> using namespace std; int main() { cout << "Hello"; } I have lisp function defined in example.lisp as below : (defun my-append (list1 list2) (if (null list1) list2 (cons (car list1) (my-append (cdr list1) list2)) )) I want to use my-append function from example.lisp in above C++ program for appending two lists. How I can implement this? Thank you very much. Mahavir On Tue, 29 Jan 2008 12:37:18 -0800 (PST), mahavir.naik@googlemail.com wr...

Calling member function using a smart pointer and a pointer to member function
/* I'm trying to figure out how to call a class member function using a pointer to the member function and either a real pointer to the class or a smart pointer to the class. So far, I've been unable to find the syntax that I need. I have hacked together a solution that I think I could use, and that doesn't require that syntax, but the solution is unlovely and I'd much prefer to find the syntax. There is one significant constraint: I want to use operator ->() in the smart pointer, because I intend to exploit the "temporary's lifetime benefit." If I can't get to that benefit, then there's no reason for me to write the code that requires this syntax in the first place. I'd obviously like to avoid burdening either the class or the smart pointer with any additional syntax if at all possible: the solution that I hacked together manages to do this, at least as far as I've taken it. If theres a clean solution that burdens the smart pointer--for instance, writing operator ->*()--then that might be ok. Burdening the class just won't do. Lastly, the signature of the member function is not an issue. In the context in which I want to make this call, that signature is known. In other words, if you can show me how to make the sample code below work, then I can handle the rest of the problem. The missing syntax is--well--missing. I've commented out a couple of things that won't do. ** The &qu...

Using (return val of) member function as default parameter of member function
Hello. Is it not possible to use (the return value of one member function) as default value for a parameter in another member function of the same class? For example In the code below I was suprised to get the compiler error "error: cannot call member function �tBcPins* tBcPinMan::allPins()� without object" If its not possible is there any decent "hack" or alternative to do achieve the same. Thanks very much in advance class tBcPinMan { ....... void fillLevelMainFromAux(tBcPins * Pins = allPins()); tBcPins * allPins(); }; -- [ See http://www.gotw.ca...

C++ and using C functions
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 hello i've tried to write a stored function in C++, using the libpq library, but the g++(3.3.1) was unable to pass through the headers. there are a lot's of reserved words used in structs as member names, such as delete,using, namespace, and so on. i'm using pgsql 7.3.4. how can I fix it? i think so, i should modify the header files, i've tried to put it into an ``extern "C" {...}'' block, but i didn't solve anything. any ideas? Bye, Gergely Czuczy mailto: phoemix@harmless.hu PGP pubke...

Using C++ functions from C
Hello The C++ standard provides a way to access C function, which is `extern "C"`, however, what about the compatibility in the opposite direction? If my C++ function happens to have the signature of a valid C function, are there guarantees about its usability from C? Thanks MSG MSG wrote: > Hello > > The C++ standard provides a way to access C function, which is `extern > "C"`, however, what about the compatibility in the opposite direction? > > If my C++ function happens to have the signature of a valid C > function, are there guarantees about...

[VW7.2] How to pass a C function name to a C function using DLLCC?
I am using OpenGL in VW. One OpenGL function takes an argument which is the pointer to another OpenGL function like: gluTessCallback(tobj, GLU_TESS_VERTEX, glVertex3dv); where glVertex3dv is another OpenGL function. How can I do that in DLLCC? Thanks, Koh In your ExternalInterface subclass that you are using for your interface, make sure you have a method that lets you call glVertex3dv. For example OpenGLInterface>>callGlVertex3dv <C: void glVertex3dv( ) > Once this method is defined, your instances of OpenGLInterface will automatically generate the corr...

How to use the template member function of a template in the member function of another template class?
Hi, I have the following program. The error line is commented. I want to call _a's member function 'doit' with the template argument of function<T>. Would you please what is the correct way to do it? Thanks, Peng #include <iostream> template <typename T> struct function { T operator()() const { return T(); } }; template <typename T> struct A { template <typename F> T doit() { return F()(); } }; template <typename T> struct B { public: T doit() { return _a.doit<function<T> >();//error } p...

Posix Thread : C++ : poiinter to Member function
Hello All... I am using Posix Thread. class Parent { public: virtual void* func(void *)=0; }; class Child : public { void *func(void *); }; void* Child :: func(void *) { //pring Msg} int GlobalFunc(Parent * p) { void* (Parent::*func)= p->func;//p May Point to Child Object....!!! pthread_t thread1; pthread_create(&thread1,NULL,.......,NULL);// Here I want to Call func of Any Derived Class of Parent pthread_exit(0); } int main() { Child ch1; GlobalFunc(&ch1); return 1; } My Problem is at pthread_create...... in pthread_create i am Able to Call any Publi...

Call Mathematica functions using C program
Hi all, I am new to Mathematica 6.Rightnow, I have a project where i need to implement Mathematica 6's Spheroidal wave functions in C program.I know there is a way to call Mathematica spheroidal functions in C but i don't know how to go about do that. Any suggestions? Thanks streamingline wrote: > Hi all, > I am new to Mathematica 6.Rightnow, I have a project where i need to implement Mathematica 6's Spheroidal wave functions in C program.I know there is a way to call Mathematica spheroidal functions in C but i don't know how to go about do that...

Using static member functions as C callbacks
Hello, I'm using a commercial C library that parses particular kinds of files by running callback functions defined in client code. The header file declares a pointer to function type using syntax similar to... extern "C"{ typedef void (*Handler)(void*, const char*, const char**); } You connect a callback function to this C library by registering a function pointer. I wanted to use a class in my C++ code as the callback function, so I declared a class like this... class ParticularKindOfHandler{ public: // declaration for handler function static void ...

How to realize a function call by reference using c?
I want to use reference in c just the same as the reference in c++, but c didn't have reference, how to achieve this goal? Is there a common method ? tuchfly <tuchfly@gmail.com> writes: > I want to use reference in c just the same as the reference in c++, > but c didn't have reference, how to achieve this goal? Is there a > common method ? Yes, you can simulate pass-by-reference in C by passing the address of an object. For example, this C++ code: void increment(int &arg) { arg ++; } /* ... */ int x = 42; inc...

Segmentation violation when calling a C-MEX function from a C-MEX S-Function using mexCallMATLAB
Hi, I am using C MEX S-function in SIMULINK. This S-function calls a Compiled C-MEX file "emdc.dll" using the command "mexCallMATLAB", which is shown feasible in "http://www.mathworks.com/support/solutions/en/data/1-22EA0J/?solution=1-22EA0J". The "emdc.dll" works well when called in the command windows. Also, this s-function can be compiled normally with "mex". However, when running the S-function in SIMULINK, "Segmentation violation" was notified. I have been looking for a lot of posts for two more days with the problem still unsol...

Web resources about - C++ volatile qualified reference and member functions useful? - comp.programming.threads

Qualified intermediary - Wikipedia, the free encyclopedia
A §1031 Qualified Intermediary (QI), also known as an Accommodator, is a company that is in the full-time business of facilitating Internal Revenue ...

QLTS - Qualified Lawyers Transfer Scheme
The QLTS Group is the professional network for international lawyers planning or considering taking the QLTS assessments to dual-qualify as... ...

Uniquely Qualified - YouTube
Mitt Romney has been a champion of small business his entire life. America has never had a candidate for president who understands the needs ...

Questions - Ryan-Biden Better Qualified - September 19-20, 2012 - Rasmussen Reports™
Rasmussen Reports - The best place to look for polls that are spot on

Call for paid childcare for 'qualified' grandparents: productivity commission
Nannies and grandparents could be paid by the government to look after children if they get the rightTAFE qualifications under a proposal to ...

Over-height truck causes chaos on M5 East, claims foreign drivers not qualified - DailyTelegraph Search ...
A GIANT B-double caused traffic chaos on a Sydney motorway today because the overseas’ driver did not know how to reverse the giant truck.

Who can forget that night 10 years ago when the Socceroos qualified for the 2006 World Cup?
The 10th anniversary of World Cup qualification in 2005 is a moment of great importance; a time to reflect, consolidate and grow.

He's fully qualified to beat Tomic
The most famous practice snub in Bernard Tomic's history involved Lleyton Hewitt,

Abbott least qualified Opposition Leader on national security since Latham: MP
Labor backbencher Anthony Byrne has used a question from the Coalition during question time to label Tony Abbott the ''least qualified'' Opposition ...

Searching for 'death-qualified' jurors slowing Boston Bombing, Colorado theatre shooting trials - CTV ...
One prospective juror was brutally frank when asked whether he could consider a sentence of life in prison for the man accused of bombing the ...

Resources last updated: 3/3/2016 6:48:16 AM