VC如何获得当前线程的ID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC如何获得当前线程的ID相关的知识,希望对你有一定的参考价值。

用CreateThread创建线程后,怎么在线程函数中获得当前线程的ID,。。。此外,我创建2个线程输出多行字符,希望出现的是交错的顺序,但偏偏出现的顺序是顺序执行两个函数的顺序,为什么?
图片:

获取当前进程的ID很简单,一种方法是调用GetCurrentThreadId()函数即可;
还有一处更简单的哈,就是在你创建进程的时候就知道了:如
m_hThread = ::CreateThread(NULL, 0, MyThreadProc, this, 0, &m_threadID);//最后一个参数就是线程ID

另外,你想出现的是交错的顺序也很简单,就是做好互斥工作就是了,在线程的相应位置调用WaitForSingleObject();不要忘了解锁即可,我是用SetEvent();最好后面加上Sleep(10);这样看到的效果就更明显了!
参考技术A CreateThread函数共六个参数,第六个参数能获得线程ID,不要设置成NULL。
你说这个顺序问题,应该是你没设置Sleep(),循环每个输出之间你设置一个Sleep。

如何在当前 vc 上获得 largeTitle,但在 vc 上获得小标题?

【中文标题】如何在当前 vc 上获得 largeTitle,但在 vc 上获得小标题?【英文标题】:how to get largeTitle on current vc, but small title on vc being pushed to? 【发布时间】:2019-07-19 08:35:50 【问题描述】:

我有一个简单的“更多”屏幕,我想要一个largeTitle。 我在一个静态表视图中有几个条目,它们通向其他视图控制器。 我想在“更多”屏幕中有大标题,而不是在推送到的屏幕中。 要么是所有大标题,要么都是小标题。我该怎么做? 我正在使用情节提要。

【问题讨论】:

【参考方案1】:

你有没有尝试设置

self.navigationController?.navigationBar.prefersLargeTitles = false

在您的第二个视图控制器中?

【讨论】:

不,我认为我可以在情节提要中完成所有大型标题行为... 我不认为这是可能的。 我在代码中尝试了你的建议。它将所有标题设置为小,因为它将它设置在 navigationController 上。这不是我想要的。我想在第一个 vc 上有一个大标题,在第二个 vc 上有一个小标题,就像在整个 iOS 中一样。 尝试在您的普通视图控制器中设置它。 无论我在哪里设置,我在情节提要中可以做的都是一样的。如果我选择navigationController(截图,最左边的vc),我可以设置这个属性。在所有其他 vc 上,我无法设置此属性,因为只有一个 navigationController。【参考方案2】:

在详细的vc上设置如下:

self.navigationItem.largeTitleDisplayMode = .never

如果你访问navigationControllernavigationItem,它会改变所有detail vc,但是如果你访问detailVC的navigationItem,它只会改变navigationBar中的当前标题。

您无法在 Storyboard 中执行此操作,因为您无法在详细信息 vc 中单击 navigationBar 本身。

更多信息请访问WWDC video from 2017。

【讨论】:

【参考方案3】:

因为只有一个navigation controller 可以堆叠您的所有视图, 你可以试试写

self.navigationController?.navigationBar.prefersLargeTitles = false

在第二个viewController的viewWillApear方法中 在viewWillDisappear 上,您可以再次将其更改为

self.navigationController?.navigationBar.prefersLargeTitles = true

【讨论】:

有更好的方法吗?看起来这更像是一种 hack,而不是 Apple 的做法。 其实这不是hack,这也是用来在viewController被推时改变导航栏颜色,在它被弹出时改变它。如果您搜索更改推送的 viewControler 的导航栏颜色,您会发现这种做法。因为只有一个导航栈在堆叠所有视图

以上是关于VC如何获得当前线程的ID的主要内容,如果未能解决你的问题,请参考以下文章

c# 怎样获得想要的线程ID

C# 获得当前 进程 或 线程的ID

如何获得thread线程的threadlocals的key值

vc++ 怎么结束 别的进程里面的一个线程?

如何获取控件句柄 vc

java中可以根据线程名而不是id获得想要的线程吗