বর্তমান পদ্ধতি কলের থ্রেড আইডি পাওয়া


122

বর্তমান থ্রেড আইডি মুদ্রণের কোনও উপায় কি যার উপর বর্তমান পদ্ধতিটি চালানো হচ্ছে?

(উদ্দেশ্য-সি দয়া করে)


3
নল প্রশ্নের উত্তর দিয়েছে, তবে আসল প্রশ্ন নয় .... আপনি কেন জানতে চান? সঠিক আচরণটি ডিবাগ করা বা জোর দেওয়া ছাড়াও কারেন্টথ্রেডের প্রাথমিক জিনিসগুলি সাধারণত একটি খারাপ ধারণা।
বুবুম

আমার জন্য এটির প্রয়োজন অন্য থ্রেডের সাথে যুক্ত থ্রেড-লোকাল অবজেক্টগুলি তৈরি করা (যেমন প্যারেন্ট অবজেক্ট এবং থ্রেডের সাথে যুক্ত - কেবল থ্রেড নয়)।
আদিব

উত্তর:


228
NSLog(@"%@", [NSThread currentThread]);

নাম = (নাল) এর অর্থ কী, যদি থ্রেড মূল হয় তবে এটি এনএসথ্রেড: 0x60800006cb80> {সংখ্যা = 1, নাম = প্রধান returns, এর অর্থ "নাম = (নাল)" ব্যাকগ্রাউন্ড থ্রেডকে বোঝায়।
নির্মলা মৌর্য

এবং কীভাবে কেউ সেই নাম এবং নম্বর দখল করে? nameএমনকি মূলটির জন্য খালি বিবরণও দেয় এবং numberকোথাও খুঁজে পাওয়া যায় না
হরি করম সিং

দ্রুত এবং নোংরা থ্রেড নম্বর:NSString *s = [NSString stringWithFormat:@"%@", [NSThread currentThread]]; int threadNum = -1; sscanf(s.UTF8String, "<NSThread: 0x%*12[0-9a-f]>{number = %d", &threadNum);
হরি করম সিং

35
#include <pthread.h>
...
mach_port_t machTID = pthread_mach_thread_np(pthread_self());
NSLog(@"current thread: %x", machTID);

4
@ রজনী071 আসলে, আপনি আর কী আশা করেছিলেন, আলাদা থ্রেডের আইডি প্রদর্শন করবেন?
অর্থ-বিষয়গুলি

[NSThread currentThread]বর্গ পদ্ধতি একটি NSThread বস্তুর ফেরৎ। আপনি এই থ্রেড অবজেক্টের ঠিকানা লগ করতে পারেন, তবে আপনি কীভাবে সংখ্যার থ্রেড আইডি পাবেন, যা এক্সকোড ডিবাগারে প্রদর্শিত হয়েছে? (মূল থ্রেডের জন্য থ্রেড 1 এবং আপনার অ্যাপ্লিকেশন দ্বারা তৈরি প্রতিটি অতিরিক্ত থ্রেডের জন্য ক্রমবর্ধমান সংখ্যা))
ডানকান সি

@ ডানকান: এটি অবশ্যই ডিবাগারের একটি বৈশিষ্ট্য, ওএস / রানটাইম নয়।
ক্যামেরন




-1

আপনি এই জাতীয় কিছু হ্যাক করতে পারেন (এটি কেবল প্রিন্ট করে, তবে আপনি নম্বর না পাওয়া পর্যন্ত আপনি এগিয়ে গিয়ে বিভক্ত করতে পারেন):

+ (NSString *)getPrettyCurrentThreadDescription {
    NSString *raw = [NSString stringWithFormat:@"%@", [NSThread currentThread]];

    NSArray *firstSplit = [raw componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"{"]];
    if ([firstSplit count] > 1) {
        NSArray *secondSplit     = [firstSplit[1] componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"}"]];
        if ([secondSplit count] > 0) {
            NSString *numberAndName = secondSplit[0];
            return numberAndName;
        }
    }

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