এই দুটি কোড বিভাগের মধ্যে কোনও পার্থক্য রয়েছে:
void f() {
thread_local vector<int> V;
V.clear();
... // use V as a temporary variable
}
এবং
void f() {
static thread_local vector<int> V;
V.clear();
... // use V as a temporary variable
}
ব্যাকস্টোরি: মূলত আমার স্ট্যাটিক ভেক্টর ভি ছিল (কিছু মধ্যবর্তী মান রাখার জন্য, আমি যখন ফাংশনে প্রবেশ করি তখন এটি পরিষ্কার হয়ে যায়) এবং একটি একক থ্রেডেড প্রোগ্রাম। আমি প্রোগ্রামটি একটি বহুবিধে পরিণত করতে চাই, তাই কোনওভাবে আমাকে এই স্থিতিশীল সংশোধক থেকে মুক্তি দিতে হবে। আমার ধারণাটি প্রতিটি স্ট্যাটিককে থ্রেড_লোকলে পরিণত করা এবং অন্য কিছুর জন্য চিন্তা করা উচিত নয়? এই পন্থা backfire করতে পারেন?
thread_local
স্থানীয় ভেরিয়েবল থাকা শুরু করার কোনও মানে নেই ... প্রতিটি থ্রেডের নিজস্ব কল স্ট্যাক রয়েছে।