关于posix的背景知识,请google之,也可以参考下面的链接:http://www.ibm.com/developerworks/cn/linux/theme/posix_thread/#secondmajorhead
由于本人的Mac book坏了,这个礼拜也没有好的希望,所以这里不解释过了,以后再编辑这个把。
创建一个view-based application,界面上加入一个label,一个button, viewcontroller的头文件如下:
#import <UIKit/UIKit.h>
@interface TPosixThreadViewController : UIViewController {
UILabel *myLabel;
}
@property (nonatomic, retain) IBOutlet UILabel *myLabel;
- (IBAction)start:(id)sender;
-(void)update;
@end
实现文件如下:
#import "TPosixThreadViewController.h"
#import <pthread.h>
void* PosixThreadMainRoutine(void* data)
{
TPosixThreadViewController *inputData = (TPosixThreadViewController *)data;
[inputData update];
// Do some work here.
NSLog(@"test posix thread");
return NULL;
}
@implementation TPosixThreadViewController
@synthesize myLabel;
- (void)dealloc
{
[myLabel release];
[super dealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[super viewDidLoad];
}
*/
- (void)viewDidUnload
{
[self setMyLabel:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (IBAction)start:(id)sender {
// Create the thread using POSIX routines.
pthread_attr_t attr;
pthread_t posixThreadID;
int returnVal;
returnVal = pthread_attr_init(&attr);
assert(!returnVal);
returnVal = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
assert(!returnVal);
pthread_attr_setstacksize(&attr, 1024*1024);
int threadError = pthread_create(&posixThreadID, &attr, &PosixThreadMainRoutine, self);
returnVal = pthread_attr_destroy(&attr);
assert(!returnVal);
if (threadError != 0)
{
// Report an error.
}
}
-(void)update
{
myLabel.text = @"kkkk";
}
@end
分享到:
相关推荐
2. 线程创建和销毁:如何使用pthread_create()来创建新线程,以及如何使用pthread_join()和pthread_exit()来管理和销毁线程。 3. 线程同步:包括互斥锁(mutexes)、条件变量(condition variables)、读写锁(read-...
6. **线程取消**:POSIX支持线程的异步取消,通过`pthread_cancel`函数可以请求取消另一个线程,而`pthread_setcancelstate`和`pthread_setcanceltype`则用于设置线程对取消操作的响应方式。 7. **线程调度**:...
如果一个线程具有堆栈保护的特性,那么系统在创建线程堆栈时会在堆栈的末尾多分配一块内存,用来防止指针访问堆栈时,溢出堆栈的边界。如果一个应用程序访问堆栈时溢出到堆栈保护区将会引发一个错误。
创建线程时,使用pthread_create()函数,它需要四个参数:一个指向pthread_t类型的指针,用于存储新创建线程的ID;一个指向pthread_attr_t类型的指针,用于设置线程的属性;一个指向函数的指针,该函数定义了线程...
1. `thread`:用于存储新创建线程的ID。 2. `attr`:线程属性结构体指针,可设定线程的各种属性,如是否分离、调度策略等。若为`NULL`,则使用默认属性。 3. `start_routine`:新线程启动时将执行的函数指针。 4. `...
- `thread`:用于存储新创建线程的标识符。 - `attr`:可选参数,指定新线程的一些属性,如默认属性等。 - `start_routine`:新线程启动时执行的函数指针。 - `arg`:传递给`start_routine`函数的参数。 与`fork()`...
当创建一个新的线程时,除了拥有独立的栈外,其他所有资源都是与创建它的主线程共享的。这种共享使得线程之间的数据交换更加迅速,同时也降低了系统资源的消耗。在线程的创建过程中,使用`pthread_create`函数,这与...
POSIX(可移植操作系统接口)线程是提高代码响应和性能的有力手段。在本系列中,Daniel Robbins 向您精确地展示在编程中如何...其中还涉及大量幕后细节,读完本系列文章,您完全可以运用 POSIX 线程创建多线程程序。
###### 1.2 创建线程 在POSIX标准下,线程的创建主要是通过`pthread_create()`函数完成的。该函数的基本原型如下: ```c int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_...
线程池是一种多线程处理形式,它可以预创建线程,并复用线程来执行多个任务,这样可以减少线程创建和销毁的开销,提高程序性能。 实际应用中,多线程的使用需要综合考虑问题的解决效率、开发复杂度、资源利用等因素...
在实际编程中,使用POSIX线程库创建线程的基本步骤如下: 1. **定义线程函数:** 这是线程执行的主体,通常接受一个参数并返回一个整数值。 2. **创建线程:** 使用`pthread_create()`函数,指定线程函数及其参数,...
- `pthread_create()`函数用于创建新的线程,它需要传递线程函数和参数等信息。 - `pthread_join()`函数用于等待线程的结束,可以获取线程的退出状态。 - `pthread_detach()`函数使线程变为分离状态,不再需要`...
- 在POSIX中,创建线程通过`pthread_create()`函数实现。这个函数需要传入线程标识符、线程属性、线程入口函数以及参数。 3. **线程属性**: - 线程属性可以指定栈大小、调度策略、优先级等,使用`pthread_attr_...
新的多线程程序以及如何向现有的程序中添加多线程。 尽管本指南同时介绍了POSIX 线程接口和Solaris 线程接口,但大多数主题都以POSIX 线程为重点。仅适用于Solaris 线程的信息将专门在一章中介绍。 要理解本指南,...
- `thread`:用于存储新创建线程的标识符(ID)。 - `attr`:线程属性结构指针,用于设置新线程的运行属性,如调度策略和优先级等。 - `start_routine`:线程启动时要执行的函数指针。 - `arg`:传递给`start_...
创建线程可以使用`pthread_create()`函数,需要指定线程函数和传递给该函数的参数。 2. **线程属性**: 线程可以有自己的属性,如调度策略和优先级,这些可以通过`pthread_attr_init()`和`pthread_attr_set*()`...
《Posix_线程编程指南》这篇文档是一篇关于POSIX线程(简称pthread)编程的详细指南,涉及到多个方面的知识点,包括线程创建与管理、线程取消、线程私有数据、线程同步、线程终止等。以下将对这些知识点进行详细说明...
在POSIX中,使用pthread_create()函数可以创建一个新线程。线程结束可以通过调用pthread_exit()或允许线程函数返回来实现。 接下来是线程的同步问题。当多个线程访问共享资源时,需要同步机制来避免冲突和不一致。...