qpid/sys/Thread.h Source File

Apache Qpid - AMQP Messaging for Java JMS, C++, Python, Ruby, and .NET | Apache Qpid Documentation

- Main Page
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

qpid/sys/Thread.h
Go to the documentation of this file.

    00001 #ifndef _sys_Thread_h
    00002 #define _sys_Thread_h
    00003
    00004 /*
    00005  *
    00006  * Licensed to the Apache Software Foundation (ASF) under one
    00007  * or more contributor license agreements.  See the NOTICE file
    00008  * distributed with this work for additional information
    00009  * regarding copyright ownership.  The ASF licenses this file
    00010  * to you under the Apache License, Version 2.0 (the
    00011  * "License"); you may not use this file except in compliance
    00012  * with the License.  You may obtain a copy of the License at
    00013  *
    00014  *   http://www.apache.org/licenses/LICENSE-2.0
    00015  *
    00016  * Unless required by applicable law or agreed to in writing,
    00017  * software distributed under the License is distributed on an
    00018  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    00019  * KIND, either express or implied.  See the License for the
    00020  * specific language governing permissions and limitations
    00021  * under the License.
    00022  *
    00023  */
    00024 #include <boost/shared_ptr.hpp>
    00025 #include "qpid/CommonImportExport.h"
    00026
    00027 #ifdef _WIN32
    00028 #  ifdef _MSC_VER
    00029 #    define QPID_TSS __declspec(thread)
    00030 #  else
    00031 #    define QPID_TSS __thread
    00032 #  endif
    00033 #elif defined (__GNUC__)
    00034 #  define QPID_TSS __thread
    00035 #elif defined (__SUNPRO_CC)
    00036 #  define QPID_TSS __thread
    00037 #else
    00038 #  error "Dont know how to define QPID_TSS for this platform"
    00039 #endif
    00040
    00041 namespace qpid {
    00042 namespace sys {
    00043
    00044 class Runnable;
    00045 class ThreadPrivate;
    00046
    00047 class Thread
    00048 {
    00049     boost::shared_ptr<ThreadPrivate> impl;
    00050
    00051   public:
    00052     QPID_COMMON_EXTERN Thread();
    00053     QPID_COMMON_EXTERN explicit Thread(qpid::sys::Runnable*);
    00054     QPID_COMMON_EXTERN explicit Thread(qpid::sys::Runnable&);
    00055
    00056     QPID_COMMON_EXTERN operator bool();
    00057     QPID_COMMON_EXTERN bool operator==(const Thread&) const;
    00058     QPID_COMMON_EXTERN bool operator!=(const Thread&) const;
    00059
    00060     QPID_COMMON_EXTERN void join();
    00061
    00062     QPID_COMMON_EXTERN static Thread current();
    00063
    00067     QPID_COMMON_EXTERN static unsigned long logId();
    00068 };
    00069
    00070 }}
    00071 #endif