Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.m
- // ls6objc
- //
- // Created by Юрий Новокрещенов on 11/11/2018.
- // Copyright © 2018 Yuri Novokreschenov. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- #import "Arithmetic.h"
- #import "Operation.h"
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- int a = 40;
- int b = 10;
- // dispatch_queue_t mainQueue = dispatch_get_main_queue();
- dispatch_group_t group = dispatch_group_create();
- dispatch_queue_t queue = dispatch_get_global_queue(QOS_CLASS_UTILITY, 0);
- __block int resultSum;
- __block int resultSubstraction;
- __block int resultMultiplication;
- dispatch_group_async(group, queue, ^{
- resultSum = [Arithmetic beginWithAction:ActionTypeSum firstNumber:a secondNumber:b];
- });
- dispatch_group_async(group, queue, ^{
- resultSubstraction = [Arithmetic beginWithAction:ActionTypeSubstraction firstNumber:a secondNumber:b];
- });
- dispatch_group_notify(group, queue, ^{
- NSLog(@"Сумма = %i", resultSum);
- NSLog(@"Разность = %i", resultSubstraction);
- });
- NSLog(@"Исходные данные: a = %i, b = %i", a, b);
- //ставим барьер
- dispatch_queue_t queue1 = dispatch_queue_create("my.first.queue", NULL);
- dispatch_async(queue1, ^{
- resultMultiplication = [Arithmetic beginWithAction:ActionTypeMultiplication firstNumber:a secondNumber:b];
- });
- dispatch_barrier_async(queue1, ^{
- NSLog(@"Произведение = %i", resultMultiplication);
- });
- // NSOperationQueue
- __block int resultDivision;
- NSOperationQueue *queue2 = [[NSOperationQueue alloc] init];
- //создади блок в котором запишем операцию
- int(^op0)(void) = ^int()
- {
- NSLog(@"Выполнился блок 0");
- return [Arithmetic beginWithAction:ActionTypeDivision firstNumber:a secondNumber:b];
- };
- int(^op1)(void) = ^int{
- int resultRemainderOfTheDivision = [Arithmetic beginWithAction:ActionTypeRemainderOfTheDivision firstNumber:a secondNumber:b];
- NSLog(@"Выполнился блок 1 %i", resultRemainderOfTheDivision);
- return resultRemainderOfTheDivision;
- };
- // хочу в operation передать действие через замыкание (то есть замыкание это написать в main, а в operation его отправить как переменную).
- Operation *operation0 = [[Operation alloc] init];
- operation0.someBlock = op0;
- [operation0 someBlock];
- Operation *operation1 = [[Operation alloc] init];
- operation1.someBlock = op1;
- [operation0 addDependency:operation1];
- [queue2 addOperation:operation0];
- [queue2 addOperation:operation1];
- [queue2 addOperationWithBlock:^{
- resultDivision = [Arithmetic beginWithAction:ActionTypeDivision firstNumber:a secondNumber:b];
- NSLog(@"Целочисленное деление = %i", resultDivision);
- }];
- int resultRemainderOfTheDivision = [Arithmetic beginWithAction:ActionTypeRemainderOfTheDivision firstNumber:a secondNumber:b];
- NSLog(@"ActionTypeRemainderOfTheDivision = %i", resultRemainderOfTheDivision);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement