উদ্দেশ্য-সি / কোকোয় জাভার থ্রেড.স্লিপ () এর সমতুল্য কী?


112

জাভাতে আপনি বর্তমান থ্রেডের সঞ্চালনটি বেশ কিছু সময় ব্যবহারের জন্য স্থগিত করতে পারেন Thread.sleep()। অবজেক্টিভ-সি-তে কি এরকম কিছু আছে?

উত্তর:


160

হ্যাঁ, এখানে [এনএসটি স্ট্রিট স্লিপফোরটাইম অন্তর্বর্তী:]

(ঠিক তাই আপনি ভবিষ্যতের প্রশ্নগুলির জন্য জানেন, অবজেক্টিভ-সি হ'ল ভাষা objects


6
থানেক্স! <br> ভবিষ্যতের রেফারেন্সের জন্য, সংজ্ঞাটি আসলে + [এনএসটি স্ট্রেড স্লিপফোরটাইম ইনটারভাল:] (সুতরাং, [এনএসটিড্রেড স্লিপফোরটাইম ইন্টার্নভাল: 0.1] এর মতো ব্যবহৃত)।
টিঙ্কারট্যাঙ্ক

এটি নিখুঁত। ধন্যবাদ! আমি সবেমাত্র আমার অ্যানিমেশন ব্লকগুলি শেষ করেছি এবং এটি একটি কবজির মতো কাজ করেছে।
RileyE

মেইন থেরাডে ঘুমাবেন কীভাবে?
jerinho.com

1
এটা একই; মূল থ্রেডটি কেবল একটি থ্রেড। মূল থ্রেডে ঘুমানো সাধারণত একটি খারাপ ধারণা যদিও এটি আপনার প্রোগ্রামটিকে অ-প্রতিক্রিয়াশীল করে তোলে।
স্মুরগন

4
যারা ভাবছেন তাদের জন্য, [এনএসটি ফ্রেড স্লিপফোর্ডটাইমআইন্টিভাল:] হ'ল [[এনএসটিহ্রেড কারেন্টথ্রেড] স্লিপ ফরটাইমআইন্টারভাল:] এর মতো।
পিনজল

94

জন্য স্লিপিং এক সেকেন্ড জাভা:

Thread.sleep(1000);

জন্য স্লিপিং এক সেকেন্ড উদ্দেশ্য সি:

[NSThread sleepForTimeInterval:1.0f];

40

ঘুমাচ্ছিস কেন? আপনি যখন ঘুমাবেন, আপনি ইউআই এবং অন্য কোনও থ্রেডে নয় এমন কোনও পটভূমি ইউআরএল অবরুদ্ধ করছেন (এনএসআরএল অ্যাসিঙ্ক্রোনাস পদ্ধতিগুলি এখনও বর্তমান থ্রেডে চালিত হয়)।

আপনি যা চান তা হ'ল সম্ভাবনাগুলি হ'ল পারফরমেক্টসলেক্টর: উইথ অবজেক্ট: আফটারডেলি। এটি এনএসওবজেক্টের একটি পদ্ধতি যা আপনি পরে কোনও প্রাক নির্ধারিত বিরতিতে কোনও পদ্ধতিতে কল করতে ব্যবহার করতে পারেন - এটি একটি কল নির্ধারিত করে যা পরবর্তী সময়ে সঞ্চালিত হবে, তবে থ্রেড হ্যান্ডলগুলি (অন্যান্য ইউআই এবং ডেটা বোঝার মতো) এর সমস্ত জিনিসই হবে এখনও অবিরত।


43
ঘুম পরীক্ষার উদ্দেশ্যে আমার পক্ষে দরকারী। আমার অ্যাপটি যথাযথভাবে সাড়া দিয়েছে তা নিশ্চিত করতে আমি কিছু নেটওয়ার্ক বিলম্ব অনুকরণ করতে পারি। বর্তমানে আমি একটি স্থানীয় ওয়েব সার্ভারের বিরুদ্ধে পরীক্ষা করছি, তাই সবকিছুই মূলত তাত্ক্ষণিক।
ব্রেন্টনব

6
ঘুমে নেটওয়ার্কের বিলম্ব পরীক্ষা করার ভুল উপায়। সিমুলেটারে নেটওয়ার্কের পরিবর্তনশীল গতি কীভাবে পরীক্ষা করতে হয় তা দেখতে এই প্রশ্নের stackoverflow.com/questions/1502060/… এর উত্তর দেখুন। যেহেতু মূল থ্রেড ঘুমানো সমস্ত কিছুকে অবরুদ্ধ করে রাখে, আপনি কোনও নেটওয়ার্ক বিলম্বকে মোটেই সিমুলেট করছেন না, তবে অ্যাপ্লিকেশনটির সাসপেনশন বেশি।
কেন্ডাল হেলস্টেটার জেলনার

JAVA থ্রেডে জয়েন অপারেশনে কী করা হয় তা অনুকরণে ঘুমানো দরকারী। আপনি 10 মিলির জন্য ঘুমান, থ্রেডটি মারা গেছে কিনা তা পরীক্ষা করে দেখুন আপনি এটি ডিলেক করতে পারেন।
মাইক এস

1
আপনি যদি কোনও সময়ের জন্য ঘুমেন তবে আপনার থ্রেড ঠিক একই অবস্থায় থাকবে যেমনটি আপনি ঘুমানোর আগে করেছিলেন। এটি একটি ভাল পরীক্ষা নয় কারণ বাস্তব বিশ্বে আপনার অ্যাপ্লিকেশনটি প্রক্রিয়াজাত হবে, ঘুমাবে না। সে কারণেই ঘুমের উপর নির্ভর না করে কীভাবে পরীক্ষা করা যায় তা নির্ধারণ করা গুরুত্বপূর্ণ।
কেন্ডল হেলস্টেটার জেলনার

+1 বিকল্প সমাধান দেখানোর জন্য ধন্যবাদ! ঠিক আমি যা খুঁজছিলাম :)
jpswain

7

অবশ্যই, আপনি স্ট্যান্ডার্ড ইউনিক্স স্লিপ () এবং ইউএসপ () কলগুলিও ব্যবহার করতে পারেন। (যদি কোকো লেখা থাকে তবে আমি [এনএসটিড্রেড স্লিপফোরটাইম ইনটারভাল:] এর সাথে থাকব))


5

আপনি যদি ঘুমের জন্য এনএসটিড্রেড স্লিপফোরটাইমআইনটারভাল (মন্তব্য কোড) ব্যবহার করেন তবে আনার তথ্যটি অবরুদ্ধ করা হবে, তবে + [এনএসটি ফ্রেড স্লিপফোর্ডটাইমইন্টারওয়াল:] (চেকল্ড পদ্ধতি) আনয়ন ডেটা অবরোধ করবে না।

নীচের মত আমার উদাহরণ কোড:

- (void)viewDidAppear:(BOOL)animated
{
//....
//show loader view
[HUD showUIBlockingIndicatorWithText:@"Fetching JSON data"];
//    while (_loans == nil || _loans.count == 0)
//    {
//        [NSThread sleepForTimeInterval:1.0f];
//        [self reloadLoansFormApi];
//        NSLog(@"sleep ");
//    }
[self performSelector:@selector(checkLoad) withObject:self afterDelay:1.0f];
}

-(void) checkLoad
{
    [self reloadLoansFormApi];
    if (_loans == nil || _loans.count == 0)
    {
        [self performSelector:@selector(checkLoad) withObject:self afterDelay:1.0f];
    } else
    {
        NSLog(@"size %d", _loans.count);
        [self.tableView reloadData];
        //hide the loader view
        [HUD hideUIBlockingIndicator];
    }
}

0

ইউএসপ () iv হিসাবে ব্যবহৃত হয় এটি ব্যবহৃত থ্রেডকে মাঝে মাঝে বিরতি দিতে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.