问题描述
这是一个代码段(来自 Aubrey Kate 关于GCD的课程),它将使#include "zip.h"
#include "gtk.h"
zip_t *mainzipfile = zip_open(g_file_get_path(file),ZIP_CHECKCONS,&error);
zip_file_t *childzip = zip_fopen(mainzipfile,"child.zip",ZIP_RDONLY);// this segfaults
zip_file_t *childofchild = zip_fopen_index((zip_t*)childzip,1,ZIP_RDONLY);
Xcode
(又名Thread sanitizer
)-检测到{{ 1}}:
TSan
但是,如果我注释掉Data race
-import UIKit
final class MainViewController: UIViewController {
var counter = 0
override func viewDidLoad() {
super.viewDidLoad()
let queue = dispatchQueue(label: "q")
queue.async {
for _ in 1 ... 10000 {
Thread.sleep(forTimeInterval: 0.1)
self.counter += 1
}
}
dispatchQueue.main.async {
for _ in 1 ... 10000 {
self.counter += 1
}
}
}
}
没有任何帮助,并且不会使程序崩溃。
我的问题是Thread.sleep(forTimeInterval: 0.1)
无法检测到数据竞争的本质变化是什么???为什么TSan需要TSan
函数才能找到TSan
,而没有它,它就无法运行。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)