ObjFW
Loading...
Searching...
No Matches
OFThread Class Reference

A class which provides portable threads. More...

#include <ObjFW/ObjFW.h>

Inheritance diagram for OFThread:
OFObject <OFObject>

Instance Methods

(instancetype) - initWithBlock:
 Initializes an already allocated thread with the specified block.
 
(nullable id) - main
 The main routine of the thread. You need to reimplement this!
 
(void) - handleTermination
 This routine is executed when the thread's main method has finished executing or terminate has been called.
 
(void) - start
 Starts the thread.
 
(id) - join
 Joins a thread.
 
- Instance Methods inherited from OFObject
(instancetype) - init
 Initializes an already allocated object.
 
(nullable OFMethodSignature *) - methodSignatureForSelector:
 Returns the method signature for the specified selector.
 
(void) - dealloc
 Deallocates the object.
 
(void) - performSelector:afterDelay:
 Performs the specified selector after the specified delay.
 
(void) - performSelector:withObject:afterDelay:
 Performs the specified selector with the specified object after the specified delay.
 
(void) - performSelector:withObject:withObject:afterDelay:
 Performs the specified selector with the specified objects after the specified delay.
 
(void) - performSelector:withObject:withObject:withObject:afterDelay:
 Performs the specified selector with the specified objects after the specified delay.
 
(void) - performSelector:withObject:withObject:withObject:withObject:afterDelay:
 Performs the specified selector with the specified objects after the specified delay.
 
(void) - performSelector:onThread:waitUntilDone:
 Performs the specified selector on the specified thread.
 
(void) - performSelector:onThread:withObject:waitUntilDone:
 Performs the specified selector on the specified thread with the specified object.
 
(void) - performSelector:onThread:withObject:withObject:waitUntilDone:
 Performs the specified selector on the specified thread with the specified objects.
 
(void) - performSelector:onThread:withObject:withObject:withObject:waitUntilDone:
 Performs the specified selector on the specified thread with the specified objects.
 
(void) - performSelector:onThread:withObject:withObject:withObject:withObject:waitUntilDone:
 Performs the specified selector on the specified thread with the specified objects.
 
(void) - performSelectorOnMainThread:waitUntilDone:
 Performs the specified selector on the main thread.
 
(void) - performSelectorOnMainThread:withObject:waitUntilDone:
 Performs the specified selector on the main thread with the specified object.
 
(void) - performSelectorOnMainThread:withObject:withObject:waitUntilDone:
 Performs the specified selector on the main thread with the specified objects.
 
(void) - performSelectorOnMainThread:withObject:withObject:withObject:waitUntilDone:
 Performs the specified selector on the main thread with the specified objects.
 
(void) - performSelectorOnMainThread:withObject:withObject:withObject:withObject:waitUntilDone:
 Performs the specified selector on the main thread with the specified objects.
 
(void) - performSelector:onThread:afterDelay:
 Performs the specified selector on the specified thread after the specified delay.
 
(void) - performSelector:onThread:withObject:afterDelay:
 Performs the specified selector on the specified thread with the specified object after the specified delay.
 
(void) - performSelector:onThread:withObject:withObject:afterDelay:
 Performs the specified selector on the specified thread with the specified objects after the specified delay.
 
(void) - performSelector:onThread:withObject:withObject:withObject:afterDelay:
 Performs the specified selector on the specified thread with the specified objects after the specified delay.
 
(void) - performSelector:onThread:withObject:withObject:withObject:withObject:afterDelay:
 Performs the specified selector on the specified thread with the specified objects after the specified delay.
 
(nullable id) - forwardingTargetForSelector:
 This method is called when resolveClassMethod: or resolveInstanceMethod: returned false. It should return a target to which the message should be forwarded.
 
(void) - doesNotRecognizeSelector:
 Handles messages which are not understood by the receiver.
 
- Instance Methods inherited from <OFObject>
(unsigned long) - hash
 Returns a hash for the object.
 
(unsigned int) - retainCount
 Returns the retain count.
 
(bool) - isProxy
 Returns whether the object is a proxy object.
 
(bool) - isKindOfClass:
 Returns a boolean whether the object is of the specified kind.
 
(bool) - isMemberOfClass:
 Returns a boolean whether the object is a member of the specified class.
 
(bool) - respondsToSelector:
 Returns a boolean whether the object responds to the specified selector.
 
(nullable IMP- methodForSelector:
 Returns the implementation for the specified selector.
 
(nullable id) - performSelector:
 Performs the specified selector.
 
(nullable id) - performSelector:withObject:
 Performs the specified selector with the specified object.
 
(nullable id) - performSelector:withObject:withObject:
 Performs the specified selector with the specified objects.
 
(nullable id) - performSelector:withObject:withObject:withObject:
 Performs the specified selector with the specified objects.
 
(nullable id) - performSelector:withObject:withObject:withObject:withObject:
 Performs the specified selector with the specified objects.
 
(bool) - isEqual:
 Checks two objects for equality.
 
(instancetype) - retain
 Increases the retain count.
 
(void) - release
 Decreases the retain count.
 
(instancetype) - autorelease
 Adds the object to the topmost autorelease pool of the thread's autorelease pool stack.
 
(instancetype) - self
 Returns the receiver.
 
(bool) - allowsWeakReference
 Returns whether the object allows a weak reference.
 
(bool) - retainWeakReference
 Retain a weak reference to this object.
 

Class Methods

(instancetype) + thread
 Creates a new thread.
 
(instancetype) + threadWithBlock:
 Creates a new thread with the specified block.
 
(nullable OFThread *) + currentThread
 Returns the current thread.
 
(nullable OFThread *) + mainThread
 Returns the main thread.
 
(bool) + isMainThread
 Returns whether the current thread is the main thread.
 
(nullable OFMutableDictionary *) + threadDictionary
 Returns a dictionary to store thread-specific data, meaning it returns a different dictionary for every thread.
 
(nullable OFDNSResolver *) + DNSResolver
 Returns the DNS resolver for the current thread.
 
(void) + sleepForTimeInterval:
 Suspends execution of the current thread for the specified time interval.
 
(void) + sleepUntilDate:
 Suspends execution of the current thread until the specified date.
 
(void) + yield
 Yields a processor voluntarily and moves the thread to the end of the queue for its priority.
 
(void) + waitForVerticalBlank
 Waits for the vertical blank.
 
(void) + terminate
 Terminates the current thread, letting it return nil.
 
(void) + terminateWithObject:
 Terminates the current thread, letting it return the specified object.
 
(void) + setName:
 Sets the name of the current thread.
 
(nullable OFString *) + name
 Returns the name of the current thread.
 
- Class Methods inherited from OFObject
(void) + load
 A method which is called once when the class is loaded into the runtime.
 
(void) + unload
 A method which is called when the class is unloaded from the runtime.
 
(void) + initialize
 A method which is called the moment before the first call to the class is being made.
 
(instancetype) + alloc
 Allocates memory for an instance of the class and sets up the memory pool for the object.
 
(Class) + class
 Returns the class.
 
(OFString *) + className
 Returns the name of the class as a string.
 
(bool) + isSubclassOfClass:
 Returns a boolean whether the class is a subclass of the specified class.
 
(nullable Class) + superclass
 Returns the superclass of the class.
 
(bool) + instancesRespondToSelector:
 Checks whether instances of the class respond to a given selector.
 
(bool) + conformsToProtocol:
 Checks whether the class conforms to a given protocol.
 
(nullable IMP+ instanceMethodForSelector:
 Returns the implementation of the instance method for the specified selector.
 
(nullable OFMethodSignature *) + instanceMethodSignatureForSelector:
 Returns the method signature of the instance method for the specified selector.
 
(OFString *) + description
 Returns a description for the class, which is usually the class name.
 
(nullable IMP+ replaceClassMethod:withMethodFromClass:
 Replaces a class method with a class method from another class.
 
(nullable IMP+ replaceInstanceMethod:withMethodFromClass:
 Replaces an instance method with an instance method from another class.
 
(void) + inheritMethodsFromClass:
 Adds all methods from the specified class to the class that is the receiver.
 
(bool) + resolveClassMethod:
 Try to resolve the specified class method.
 
(bool) + resolveInstanceMethod:
 Try to resolve the specified instance method.
 
(id) + copy
 Returns the class.
 

Properties

OFStringname
 The name for the thread to use when starting it.
 
OFThreadBlock block
 The block to execute in the thread.
 
OFRunLooprunLoop
 The run loop for the thread.
 
float priority
 The priority of the thread.
 
size_t stackSize
 The stack size of the thread.
 
bool supportsSockets
 Whether the thread supports sockets.
 
- Properties inherited from OFObject
OFStringclassName
 The name of the object's class.
 
OFStringdescription
 A description for the object.
 

Detailed Description

A class which provides portable threads.

To use it, you should create a new class derived from it and reimplement main.

Warning
Some operating systems such as AmigaOS need special per-thread initialization of sockets. If you intend to use sockets in the thread, set the supportsSockets property to true before starting it.
Even though the OFCopying protocol is implemented, it does not return an independent copy of the thread, but instead retains it. This is so that the thread can be used as a key for a dictionary, so context can be associated with a thread.

Method Documentation

◆ currentThread

+ (OFThread *) currentThread

Returns the current thread.

Returns
The current thread

◆ DNSResolver

+ (OFDNSResolver *) DNSResolver

Returns the DNS resolver for the current thread.

Constructs the DNS resolver is there is none yet, unless currentThread is nil, in which case it returns nil.

Returns
The DNS resolver for the current thread

◆ handleTermination

- (void) handleTermination

This routine is executed when the thread's main method has finished executing or terminate has been called.

Note
Be sure to call [super handleTermination]!

◆ initWithBlock:

- (instancetype) initWithBlock: (OFThreadBlock) block

Initializes an already allocated thread with the specified block.

Parameters
blockA block which is executed by the thread
Returns
An initialized OFThread.

◆ isMainThread

+ (bool) isMainThread

Returns whether the current thread is the main thread.

Returns
Whether the current thread is the main thread.

◆ join

- (id) join

Joins a thread.

Returns
The object returned by the main method of the thread.
Exceptions
OFJoinThreadFailedExceptionJoining the thread failed

◆ main

- (id) main

The main routine of the thread. You need to reimplement this!

Returns
The object the join method should return when called for this thread

◆ mainThread

+ (OFThread *) mainThread

Returns the main thread.

Returns
The main thread

◆ name

+ (nullable OFString *) name

Returns the name of the current thread.

Returns
The name of the current thread.

◆ setName:

+ (void) setName: (nullable OFString *) name

Sets the name of the current thread.

Unlike the instance method, this can be used after the thread has been started.

Parameters
nameThe new name for the current thread.

◆ sleepForTimeInterval:

+ (void) sleepForTimeInterval: (OFTimeInterval) timeInterval

Suspends execution of the current thread for the specified time interval.

Parameters
timeIntervalThe number of seconds to sleep

◆ sleepUntilDate:

+ (void) sleepUntilDate: (OFDate *) date

Suspends execution of the current thread until the specified date.

Parameters
dateThe date to wait for

◆ start

- (void) start

Starts the thread.

Exceptions
OFStartThreadFailedExceptionStarting the thread failed
OFThreadStillRunningExceptionThe thread is still running

◆ terminateWithObject:

+ (void) terminateWithObject: (nullable id) object

Terminates the current thread, letting it return the specified object.

Parameters
objectThe object which the terminated thread will return
Exceptions
OFInvalidArgumentExceptionThe method was called from the main thread

◆ thread

+ (instancetype) thread

Creates a new thread.

Returns
A new, autoreleased thread

◆ threadDictionary

+ (OFMutableDictionary *) threadDictionary

Returns a dictionary to store thread-specific data, meaning it returns a different dictionary for every thread.

Returns
A dictionary to store thread-specific data

◆ threadWithBlock:

+ (instancetype) threadWithBlock: (OFThreadBlock) block

Creates a new thread with the specified block.

Parameters
blockA block which is executed by the thread
Returns
A new, autoreleased thread

◆ waitForVerticalBlank

+ (void) waitForVerticalBlank

Waits for the vertical blank.

Note
This method is only available on Wii, Nintendo DS and Nintendo 3DS.

Property Documentation

◆ name

- (OFString *) name
readwriteatomic

The name for the thread to use when starting it.

Note
While this can be changed after the thread has been started, it will have no effect once the thread started. If you want to change the name of the current thread after it has been started, look at the class method setName:.

◆ priority

- (float) priority
readwritenonatomicassign

The priority of the thread.

Note
This has to be set before the thread is started!

This is a value between -1.0 (meaning lowest priority that still schedules) and +1.0 (meaning highest priority that still allows getting preempted) with normal priority being 0.0 (meaning being the same as the main thread).

Exceptions
OFThreadStillRunningExceptionThe thread is already/still running and thus the priority cannot be changed

◆ stackSize

- (size_t) stackSize
readwritenonatomicassign

The stack size of the thread.

Note
This has to be set before the thread is started!
Exceptions
OFThreadStillRunningExceptionThe thread is already/still running and thus the stack size cannot be changed

◆ supportsSockets

- (bool) supportsSockets
readwritenonatomicassign

Whether the thread supports sockets.

Some operating systems such as AmigaOS need special per-thread initialization of sockets. If you intend to use sockets in the thread, set this property to true before starting the thread.

Exceptions
OFThreadStillRunningExceptionThe thread is already/still running and thus the sockets support cannot be enabled/disabled

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