多線程基礎.線程鎖

多線程基礎.

void*run(void*papapa

{

for(NSIntegeri =0; i <100000; i++) {

NSLog(@"%lu", i);

}

returnNULL;

}

- (IBAction)buttonAction:(id)sender {//這是Xib拖得Btn

/*

// pthread的簡單認識

pthread_t pthread;

//第一個參數(shù)線程指針

//第二個參數(shù)線程的一些屬性

//第三個參數(shù)函數(shù)指針用于執(zhí)行方法

//第四個參數(shù)線程中的傳值

pthread_create(&pthread, NULL, run, NULL);

*/

//??? [self createNSThread];

//??? [self createNSThread1];

[selfcreateNSThread2];

}

#pragma mark - NSThread

//當我們應用程序剛剛運行的時候系統(tǒng)會自動為我們開放一個線程,這個線程叫做主線程

//子線程:程序員用代碼手動開啟的線程

//線程存在的意義:執(zhí)行耗時操作的任務

//子線程在執(zhí)行完自己的任務之后會自動銷毀

- (void)haoshicaozuo

{

//??? for (NSInteger i = 0; i < 100000; i++) {

//??????? NSLog(@"%lu", i);

//??? }

//當前應用程序的主線程

NSLog(@"-------------------%@", [NSThreadmainThread]);

//當前線程

NSLog(@"-------------------%@", [NSThreadcurrentThread]);

//判斷是否為主線程

NSLog(@"-------------------%d", [NSThreadisMainThread]);

}

- (void)createNSThread

{

//創(chuàng)建一個線程

NSThread*thread = [[NSThreadalloc]initWithTarget:selfselector:@selector(haoshicaozuo)object:@"123"];

thread.name=@"123";

//開啟線程

[threadstart];

//??? NSLog(@"%@", thread);

//當前應用程序的主線程

NSLog(@"%@", [NSThreadmainThread]);

//當前線程

NSLog(@"%@", [NSThreadcurrentThread]);

//判斷是否為主線程

NSLog(@"%d", [NSThreadisMainThread]);

}

- (void)createNSThread1

{

//快捷創(chuàng)建無返回值

[NSThreaddetachNewThreadSelector:@selector(haoshicaozuo)toTarget:selfwithObject:@"456"];

}

- (void)createNSThread2

{

//隱式開啟線程

[selfperformSelectorInBackground:@selector(haoshicaozuo)withObject:@"789"];

?}

***********************************************************************************************************************

***********************************************************************************************************************

***********************************************************************************************************************

***********************************************************************************************************************

線程鎖

/** C售票員*/

@property(nonatomic,strong)NSThread*thread3;

/**票數(shù)*/

@property(nonatomic,assign)NSIntegerticketCount;

@end

@implementationViewController

- (void)viewDidLoad {

[superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

self.ticketCount=100;

self.thread1= [[NSThreadalloc]initWithTarget:selfselector:@selector(saleTicket)object:nil];

}

//當我們點擊屏幕的時候開啟子線程

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event

{

[self.thread1start];

}

//賣票的方法

- (void)saleTicket

{

while(1) {

//??????? NSObject *object = [[NSObject alloc] init];

//線程鎖線程鎖是唯一的爹橱,只能有一把所以通常我們可以寫上self

@synchronized(self) {

//先取出總票數(shù)

NSIntegercount =self.ticketCount;

if(count >0) {

self.ticketCount= count -1;

[NSThreadsleepForTimeInterval:0.1];

NSLog(@"%@ %zd", [NSThreadcurrentThread],self.ticketCount);

}else{

NSLog(@"票賣完了");

break;}}}}

***********************************************************************************************************************

***********************************************************************************************************************

********************************NSOperation*********************************************************

***********************************************************************************************************************

// NSOperation是一個抽象類满败,我們一般不直接使用它,而是使用它的子類NSInvocationOperation類還有NSBlockOperation

//如果他們單獨使用都是在主線程執(zhí)行,只有和隊列放一起使用才是在子線程下執(zhí)行的

- (void)createNSOperation

{

NSInvocationOperation*operation1 = [[NSInvocationOperationalloc]initWithTarget:selfselector:@selector(operationAction1)object:nil];

//??? [operation1 start];

NSInvocationOperation*operation2 = [[NSInvocationOperationalloc]initWithTarget:selfselector:@selector(operationAction2)object:nil];

NSBlockOperation*operation3 = [NSBlockOperationblockOperationWithBlock:^{

for(inti =20; i <30; i++) {

NSLog(@"%d", i);

}}];


//操作隊列

//目的:是將我們的任務放在一個隊列中執(zhí)行

//任務:任務執(zhí)行在主線程還是在子線程全都是由我們的隊列來決定的

//加入到隊列

// mainQueue代表著主隊列

//如果是alloc init的那就代表著其他隊列

//??? NSOperationQueue *queue = [NSOperationQueue mainQueue];

NSOperationQueue*queue = [[NSOperationQueuealloc]init];

//先加的先執(zhí)行琅锻,后加的后執(zhí)行帮掉,但是執(zhí)行的時間不一定,可能后執(zhí)行的比先執(zhí)行的先執(zhí)行完

[queueaddOperation:operation1];

}

- (void)operationAction1

{for(inti =0; i <10; i++) {

NSLog(@"%d", i);}}

- (void)operationAction2

{

for(inti =10; i <20; i++) {

NSLog(@"%d", i);}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末耿戚,一起剝皮案震驚了整個濱河市湿故,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌膜蛔,老刑警劉巖坛猪,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異皂股,居然都是意外死亡墅茉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門屑墨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來躁锁,“玉大人,你說我怎么就攤上這事卵史≌阶” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵以躯,是天一觀的道長槐秧。 經(jīng)常有香客問我啄踊,道長,這世上最難降的妖魔是什么刁标? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任颠通,我火速辦了婚禮,結果婚禮上膀懈,老公的妹妹穿的比我還像新娘顿锰。我一直安慰自己,他們只是感情好启搂,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布硼控。 她就那樣靜靜地躺著,像睡著了一般胳赌。 火紅的嫁衣襯著肌膚如雪牢撼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天疑苫,我揣著相機與錄音熏版,去河邊找鬼。 笑死捍掺,一個胖子當著我的面吹牛撼短,可吹牛的內容都是我干的。 我是一名探鬼主播乡小,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼阔加,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了满钟?” 一聲冷哼從身側響起胜榔,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎湃番,沒想到半個月后夭织,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡吠撮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年尊惰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泥兰。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡弄屡,死狀恐怖,靈堂內的尸體忽然破棺而出鞋诗,到底是詐尸還是另有隱情膀捷,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布削彬,位于F島的核電站全庸,受9級特大地震影響秀仲,放射性物質發(fā)生泄漏。R本人自食惡果不足惜壶笼,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一神僵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧覆劈,春花似錦保礼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侯勉。三九已至鹦筹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間址貌,已是汗流浹背铐拐。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留练对,地道東北人遍蟋。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像螟凭,于是被迫代替她去往敵國和親虚青。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內容