Multi-threading and network development for iOS multi-threaded Nsthread

Source: Internet
Author: User
<span id="Label3"></p><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="font-family:Comic Sans MS;font-size:18px;"></span></span></span><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="line-height: 26px;"><span style="font-family: ‘Comic Sans MS‘;">Shimen The main contribution, respect the work of the author, please do not reprint.</span></span></p></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="line-height: 26px;"><span style="font-family: ‘Comic Sans MS‘;"><span style="color: rgb(119, 119, 119); text-align: center;">If the article is helpful to you, you are welcome to donate to the author, support the Shimen, donate the amount at random, ^_^</span><br></span></span></p></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="line-height: 26px;"><span style="text-align: center;"><span style="font-family: ‘Comic Sans MS‘;"><span style="color: rgb(119, 119, 119);">I want to donate:</span> click Donate</span></span></span></p></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="line-height: 26px;"><span style="color: rgb(119, 119, 119); text-align: center;"><span style="font-family: ‘Comic Sans MS‘;">Cocos2d-x source Download: Dot I teleport</span></span></span></p></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="font-family: ‘Comic Sans MS‘;"><span style="line-height: 26px; color: rgb(119, 119, 119); text-align: center;">Games official Download:</span>HTTP://DWZ.CN/RWTJL</span></p></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="font-family: ‘Comic Sans MS‘;"><span style="line-height: 26px; color: rgb(119, 119, 119);">Game Video Preview:</span>http://dwz.cn/RzHHd</span></p></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="font-family: ‘Comic Sans MS‘;"><span style="line-height: 26px; color: rgb(119, 119, 119);">game development Blog:</span>Http://dwz.cn/RzJzI</span></p></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="font-family: ‘Comic Sans MS‘;"><span style="color: rgb(60, 60, 60); line-height: 26px;"><span style="font-weight: normal;"><span style="color: rgb(119, 119, 119);"><strong>Game Source Transfer</strong></span></span> : Http://dwz.cn/Nret1</span><span style="color: rgb(60, 60, 60);"><span style="max-width: 100%; line-height: 26px;"></span></span></span></p></p><br><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="font-family:Comic Sans MS;font-size:18px;">Basic use of A.nsthread</span></span></span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="font-family:Comic Sans MS;font-size:18px;">1. Creating and starting Threads</span></span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">A Nsthread object represents a thread<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">creating, Starting Threads<br style="margin: 0px; padding: 0px;">Nsthread *thread = [[nsthread alloc] initwithtarget:self selector: @selector (run) object:nil];<br style="margin: 0px; padding: 0px;">[thread start];<br style="margin: 0px; padding: 0px;">When a thread is started, the Run method of self is executed in threads thread<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">Main thread related usage<br style="margin: 0px; padding: 0px;">+ (nsthread *) mainthread; Get the main thread<br style="margin: 0px; padding: 0px;">-(BOOL) ismainthread; is the main thread<br style="margin: 0px; padding: 0px;">+ (BOOL) ismainthread; is the main</span> thread</span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"> </span></span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="font-family:Comic Sans MS;font-size:18px;">2. Other Methods</span></span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">Get current thread<br style="margin: 0px; padding: 0px;">Nsthread *current = [nsthread currentthread];<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">Scheduling Priority for Threads<br style="margin: 0px; padding: 0px;">+ (double) threadpriority;<br style="margin: 0px; padding: 0px;">+ (BOOL) setthreadpriority: (double) p;<br style="margin: 0px; padding: 0px;">-(double) threadpriority;<br style="margin: 0px; padding: 0px;">-(BOOL) setthreadpriority: (double) p;<br style="margin: 0px; padding: 0px;">The scheduling priority value range is 0.0 ~ 1.0, The default 0.5, the higher the value, the higher the priority<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">The name of the thread<br style="margin: 0px; padding: 0px;">-(void) setName: (nsstring *) n;<br style="margin: 0px; padding: 0px;">-(nsstring *) name;</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"> </span></span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="font-family:Comic Sans MS;font-size:18px;">3. Other ways to create threads</span></span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">automatically start a thread after creating a thread<br style="margin: 0px; padding: 0px;">[nsthread detachnewthreadselector: @selector (run) totarget:self withobject:nil];<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">Implicitly creating and starting a thread<br style="margin: 0px; padding: 0px;">[self performselectorinbackground: @selector (run) withobject:nil];<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">Pros and cons of the above 2 ways to create threads<br style="margin: 0px; padding: 0px;">Advantages: Simple and fast<br style="margin: 0px; padding: 0px;">Cons: Unable to set the thread in more detail</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"> </span></span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="font-family:Comic Sans MS;font-size:18px;">4. Thread Life cycle</span></span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"></span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"> </span></span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="font-family:Comic Sans MS;font-size:18px;">5. Control Thread Turntable</span></span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">Start thread<br style="margin: 0px; padding: 0px;">-(void) start;<br style="margin: 0px; padding: 0px;">Go to Ready status, run Status. Automatically enters the death state when the thread task is completed<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">Blocking (pausing) Threads<br style="margin: 0px; padding: 0px;">+ (void) sleepuntildate: (nsdate *) date;<br style="margin: 0px; padding: 0px;">+ (void) sleepfortimeinterval: (nstimeinterval) ti;<br style="margin: 0px; padding: 0px;">Enter blocking state<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">Force Stop Thread<br style="margin: 0px; padding: 0px;">+ (void) exit;<br style="margin: 0px; padding: 0px;">Into the state of death<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">Note: once the thread has stopped (dead), it cannot be opened Again.</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"> </span></span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="font-family:Comic Sans MS;font-size:18px;">6. Multi-threaded Security Risks</span></span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">Resource sharing<br style="margin: 0px; padding: 0px;">1 of resources may be shared by multiple threads, that is, multiple threads may access the same block of resources<br style="margin: 0px; padding: 0px;">For example, multiple threads access the same object, the same variable, the same file<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">Data confusion and data security issues can easily arise when multiple threads access the same resource</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"> </span></span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="font-family:Comic Sans MS;font-size:18px;">7. Mutex (to prevent multi-threaded resource Looting)</span></span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"><span style="margin: 0px; padding: 0px;">(1) the use of the mutex lock format</span><br style="margin: 0px; padding: 0px;">@synchronized (lock Object) {//code to be locked}<br style="margin: 0px; padding: 0px;">Note: locking 1 parts of code with only 1 locks, with multiple locks is not valid<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">Advantages and disadvantages of mutual exclusion lock<br style="margin: 0px; padding: 0px;">Advantages: it can effectively prevent the data security problem caused by multi-thread snatch resource<br style="margin: 0px; padding: 0px;">Cons: consumes a lot of CPU resources<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">Use of mutexes: multiple threads rob the same piece of resources<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">Related professional terminology: thread synchronization<br style="margin: 0px; padding: 0px;">Thread synchronization means that multiple threads perform tasks sequentially<br style="margin: 0px; padding: 0px;">Mutex is the use of thread synchronization technology</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"> </span></span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="font-family:Comic Sans MS;font-size:18px;">(2) Locking @synchronized</span></span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">@property (nonatomic, Strong) nsobject *lock;</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">Self.lock = [[nsobject alloc] init]</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">@synchronized (self.lock) {</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">...</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">}</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">note: to use the same "lock" to properly lock code resources</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"> </span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">advantages: effectively prevent multi-thread snatch resources</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">Cons: consumes a lot of CPU resources</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"> </span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">in fact, the member property modifier Atomic lock, which is the default</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">so we generally use nonatomic to improve performance</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"> </span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">try to avoid multi-thread snatch resources</span></span><span style="font-family:Comic Sans MS;font-size:18px;">if <span style="font-family:Comic Sans MS;font-size:18px;">possible, dispose of the looting resources to the server Side.</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"> </span></span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="font-family:Comic Sans MS;font-size:18px;">(3) about atomic and nonatomic modifiers</span></span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">OC has nonatomic and atomic two choices when defining attributes<br style="margin: 0px; padding: 0px;">Atomic: Atomic attribute, locking for Setter method (default is Atomic)<br style="margin: 0px; padding: 0px;">Nonatomic: non-atomic attribute, does not lock the setter method<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">Atomic Plus Lock principle<br style="margin: 0px; padding: 0px;">@property (assign, Atomic) int age;<br style="margin: 0px; padding: 0px;">-(void) Setage: (int) Age<br style="margin: 0px; padding: 0px;">{<br style="margin: 0px; padding: 0px;">@synchronized (self) {<br style="margin: 0px; padding: 0px;">_age = age;<br style="margin: 0px; padding: 0px;">}<br style="margin: 0px; padding: 0px;">}</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"> </span></span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="font-family:Comic Sans MS;font-size:18px;">(4) Atomic vs nonatomic</span></span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">Comparison of Nonatomic and atomic<br style="margin: 0px; padding: 0px;">Atomic: thread-safe, requires a lot of resources<br style="margin: 0px; padding: 0px;">Nonatomic: non-thread-safe, suitable for small memory mobile devices<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">Recommendations for iOS development<br style="margin: 0px; padding: 0px;">All properties are declared as Nonatomic<br style="margin: 0px; padding: 0px;">Try to avoid multiple threads robbing the same piece of resources<br style="margin: 0px; padding: 0px;">As far as possible to locking, resource-grabbing business logic to the Server-side processing, reduce the pressure of mobile clients</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"> </span></span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="font-family:Comic Sans MS;font-size:18px;">8. Inter-thread Communication</span></span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">What is called Inter-thread communication<br style="margin: 0px; padding: 0px;">In 1 processes, threads often do not exist in isolation and require frequent communication between multiple threads<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">The embodiment of inter-thread communication<br style="margin: 0px; padding: 0px;">1 Threads pass data to another 1 threads<br style="margin: 0px; padding: 0px;">After performing a specific task in 1 threads, go to another 1 thread to continue the task<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;">Common methods for inter-thread communication<br style="margin: 0px; padding: 0px;">-(void) performselectoronmainthread: (SEL) aselector withobject: (id) arg waituntildone: (BOOL) wait;<br style="margin: 0px; padding: 0px;">-(void) performselector: (SEL) aselector onthread: (nsthread *) thr withobject: (id) arg waituntildone: (BOOL) wait;</span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"><br></span></span><span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;"></span></span><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="line-height: 26px;"><span style="font-family: ‘Comic Sans MS‘;">Shimen The main contribution, respect the work of the author, please do not reprint.</span></span></p></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="line-height: 26px;"><span style="font-family: ‘Comic Sans MS‘;"><span style="color: rgb(119, 119, 119); text-align: center;">If the article is helpful to you, you are welcome to donate to the author, support the Shimen, donate the amount at random, ^_^</span><br></span></span></p></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="line-height: 26px;"><span style="text-align: center;"><span style="font-family: ‘Comic Sans MS‘;"><span style="color: rgb(119, 119, 119);">I want to donate:</span> click Donate</span></span></span></p></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="line-height: 26px;"><span style="color: rgb(119, 119, 119); text-align: center;"><span style="font-family: ‘Comic Sans MS‘;">Cocos2d-x source Download: Dot I teleport</span></span></span></p></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="font-family: ‘Comic Sans MS‘;"><span style="line-height: 26px; color: rgb(119, 119, 119); text-align: center;">Games official Download:</span>HTTP://DWZ.CN/RWTJL</span></p></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="font-family: ‘Comic Sans MS‘;"><span style="line-height: 26px; color: rgb(119, 119, 119);">Game Video Preview:</span>http://dwz.cn/RzHHd</span></p></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="font-family: ‘Comic Sans MS‘;"><span style="line-height: 26px; color: rgb(119, 119, 119);">game development Blog:</span>Http://dwz.cn/RzJzI</span></p></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-bottom: 5px; color: rgb(92, 92, 92); background-color: rgb(245, 245, 245); line-height: 28px; border: 0px; text-indent: 22px;"><span style="font-family: ‘Comic Sans MS‘;"><span style="color: rgb(60, 60, 60); line-height: 26px;"><span style="font-weight: normal;"><span style="color: rgb(119, 119, 119);"><strong>Game Source Transfer</strong></span></span> : Http://dwz.cn/Nret1</span><span style="color: rgb(60, 60, 60);"><span style="max-width: 100%; line-height: 26px;"></span></span></span></p></p> <p style="font-size:12px;"><p style="font-size:12px;">Copyright Notice: This article for Bo Master original article, without Bo Master permission not Reproduced.</p></p> <p><p> Multithreaded Nsthread for iOS multi-threading and network development </p> </p></span>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.