Rosetta  2020.37
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Member Functions | Friends | List of all members
basic::thread_manager::RosettaThreadManagerAdvancedAPIKey Class Reference

A class containing no private member data and only a constructor as a private member function, with friendship to only those classes that should be able to access the advanced RosettaThreadManager API. Since the advanced API requires an instance of a RosettaThreadManagerAdvancedAPIKey, this ensures that only those classes can access the advanced API. More...

#include <RosettaThreadManagerAdvancedAPIKey.hh>

Public Member Functions

 ~RosettaThreadManagerAdvancedAPIKey ()=default
 

Private Member Functions

 RosettaThreadManagerAdvancedAPIKey ()
 Private, explicitly-declared constructor ensures that we can't instantiate except in whitelisted contexts. More...
 
 RosettaThreadManagerAdvancedAPIKey (RosettaThreadManagerAdvancedAPIKey const &)=delete
 Prohibit copying. More...
 

Friends

class RosettaThreadManager
 
class ::RosettaThreadManagerTests
 

Detailed Description

A class containing no private member data and only a constructor as a private member function, with friendship to only those classes that should be able to access the advanced RosettaThreadManager API. Since the advanced API requires an instance of a RosettaThreadManagerAdvancedAPIKey, this ensures that only those classes can access the advanced API.

Author
Vikram K. Mulligan (vmull.nosp@m.igan.nosp@m.@flat.nosp@m.iron.nosp@m.insti.nosp@m.tute.nosp@m..org)

If you use the RosettaThreadManager::run_function_in_threads() advanced API, you must modify this class to add your calling context to the friend list for this class. If you do not do this, you will not be able to create an instance of this class to pass to that function. Whitelisting your calling context will light up the central_class_modification integration test, and this means that you will be forced to justify why you need the advanced API before you can merge your code. It is STRONGLY recommended that you try to use the basic API (the RosettaThreadManager::do_work_vector_in_threads() function), which is much safer, if you possibly can. If you want to discuss the best way to multi-thread your code, please talk to Andrew Leaver-Fay or Vikram K. Mulligan BEFORE starting.

Constructor & Destructor Documentation

basic::thread_manager::RosettaThreadManagerAdvancedAPIKey::RosettaThreadManagerAdvancedAPIKey ( )
inlineprivate

Private, explicitly-declared constructor ensures that we can't instantiate except in whitelisted contexts.

basic::thread_manager::RosettaThreadManagerAdvancedAPIKey::RosettaThreadManagerAdvancedAPIKey ( RosettaThreadManagerAdvancedAPIKey const &  )
privatedelete

Prohibit copying.

basic::thread_manager::RosettaThreadManagerAdvancedAPIKey::~RosettaThreadManagerAdvancedAPIKey ( )
default

Friends And Related Function Documentation

friend class ::RosettaThreadManagerTests
friend
friend class RosettaThreadManager
friend

The documentation for this class was generated from the following file: