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


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.