当前位置: 首页 > news >正文

泰州哪家做网站建设比较好做个公司网站大概多少钱

泰州哪家做网站建设比较好,做个公司网站大概多少钱,苏家屯有做网站的吗,重庆网站服务建设在单例中使用多线程时,需要注意以下几点: 线程安全:在多线程环境下,单例对象可能被多个线程同时访问,因此需要确保单例的线程安全,避免出现数据竞争等问题。 对象创建:如果在单例对象的构造函数…

在单例中使用多线程时,需要注意以下几点:

  • 线程安全:在多线程环境下,单例对象可能被多个线程同时访问,因此需要确保单例的线程安全,避免出现数据竞争等问题。

  • 对象创建:如果在单例对象的构造函数中启动了新的线程,那么可能会在单例对象还没有完全创建完成时就开始执行线程。因此,在创建单例对象时需要考虑到线程的启动时机,可以使用懒汉式的延迟加载方式,在需要使用单例对象时再进行初始化。

  • 生命周期管理:如果在单例对象中启动了线程,那么需要考虑线程的生命周期管理,避免线程一直运行导致资源泄漏等问题。可以在单例对象的析构函数中停止线程,或者提供额外的接口供外部调用停止线程。

以下是一个在单例中使用多线程的示例代码:


public class Singleton
{private static Singleton instance = null;private static readonly object padlock = new object();private Thread workerThread;private bool stopWorkerThread = false;public static Singleton Instance{get{lock (padlock){if (instance == null){instance = new Singleton();}return instance;}}}private Singleton(){workerThread = new Thread(WorkerThreadMethod);workerThread.Start();}private void WorkerThreadMethod(){while (!stopWorkerThread){// Do some work...}}public void StopWorkerThread(){stopWorkerThread = true;}~Singleton(){StopWorkerThread();}
}

在这个例子中,Singleton 是一个单例类,它在构造函数中启动了一个工作线程,并且提供了一个 StopWorkerThread 接口用于停止工作线程。在 Singleton 的析构函数中会调用 StopWorkerThread 接口来停止工作线程,确保线程的生命周期管理。在使用 Singleton 时,可以通过 Singleton.Instance 来获取单例对象,并且可以调用 StopWorkerThread 接口来停止工作线程。

非阻塞型

将GetInstance()的返回类型从Task改为UniTask,这是Unity针对异步编程所提供的更高效的API。
将_instance声明为UniTaskCompletionSource类型,并在Initialize()方法完成后使用TrySetResult()方法将结果赋值给_instance。
在Instance属性中使用AsyncLazy类型来实现延迟初始化,并确保多个线程安全地访问单例。
下面是修改后的代码示例:

using Cysharp.Threading.Tasks;public abstract class SingletonTask<T> where T : SingletonTask<T>, new()
{private static readonly AsyncLazy<T> _instance = new AsyncLazy<T>(async () =>{var instance = new T();await instance.InitializeAsync();return instance;});public static UniTask<T> InstanceAsync => _instance.Value;protected virtual UniTask InitializeAsync(){return UniTask.CompletedTask;}
}

这里我们使用了AsyncLazy来延迟初始化单例,并将Initialize()方法改为InitializeAsync(),返回UniTask类型。注意到InitializeAsync()方法是虚方法,方便子类进行实现。

使用时,可以通过调用InstanceAsync属性来获取单例,例如:


public class GameManager : SingletonTask<GameManager>
{private int _score = 0;public void AddScore(int score){_score += score;}protected override UniTask InitializeAsync(){Debug.Log("Game manager initialized.");return UniTask.CompletedTask;}
}// 在其他地方获取GameManager单例
GameManager.InstanceAsync.ContinueWith(gameManager => {gameManager.AddScore(100);
});

这里通过ContinueWith方法来在获取单例后执行添加分数的操作,而不需要等待单例初始化完成。

阻塞型

如果需要等待单例初始化完成,可以在获取单例的时候返回一个 Task 对象,并在单例初始化完成后 Task 对象得到通知。具体的实现可以参考下面的代码:


public abstract class SingletonTask<T> where T : SingletonTask<T>, new()
{private static readonly object padlock = new object();private static T _instance;private static TaskCompletionSource<T> _tcs;public static async Task<T> GetInstanceAsync(){if (_instance != null){return _instance;}if (_tcs == null){_tcs = new TaskCompletionSource<T>();}await _tcs.Task;return _instance;}protected SingletonTask(){lock (padlock){if (_instance != null){throw new InvalidOperationException("Cannot create multiple instances of singleton.");}_instance = this as T;_tcs?.TrySetResult(_instance);}}public abstract Task Initialize();
}

在上面的代码中,GetInstanceAsync 方法返回一个 Task 对象,如果单例已经初始化完成,则直接返回单例;否则创建一个 TaskCompletionSource 对象 _tcs 并返回其 Task 属性。当单例初始化完成时,调用 _tcs.TrySetResult(_instance) 方法,通知等待该 Task 的代码,单例已经初始化完成。具体使用方式如下:


public class MySingleton : SingletonTask<MySingleton>
{private MySingleton(){}public override async Task Initialize(){// 初始化代码await Task.Delay(1000);}
}// 获取单例,并等待初始化完成
var instance = await MySingleton.GetInstanceAsync();

上述代码会等待 MySingleton 的初始化完成,然后返回单例对象。


文章转载自:
http://incarceration.rkck.cn
http://interrogator.rkck.cn
http://matte.rkck.cn
http://vortical.rkck.cn
http://antimonide.rkck.cn
http://unstressed.rkck.cn
http://isa.rkck.cn
http://nonreliance.rkck.cn
http://asphyxiation.rkck.cn
http://violate.rkck.cn
http://amputate.rkck.cn
http://mixologist.rkck.cn
http://inceptive.rkck.cn
http://bloodstain.rkck.cn
http://guthrun.rkck.cn
http://instrumental.rkck.cn
http://unmoved.rkck.cn
http://royally.rkck.cn
http://kantar.rkck.cn
http://dodecaphonist.rkck.cn
http://perigynous.rkck.cn
http://leonore.rkck.cn
http://adcolumn.rkck.cn
http://drafter.rkck.cn
http://anaesthetization.rkck.cn
http://petn.rkck.cn
http://quart.rkck.cn
http://condor.rkck.cn
http://polygram.rkck.cn
http://mauritius.rkck.cn
http://antarctic.rkck.cn
http://intertropical.rkck.cn
http://intermedia.rkck.cn
http://oestrus.rkck.cn
http://york.rkck.cn
http://annabergite.rkck.cn
http://monodactyl.rkck.cn
http://villain.rkck.cn
http://ebulliometer.rkck.cn
http://mordacious.rkck.cn
http://baor.rkck.cn
http://geranium.rkck.cn
http://macaque.rkck.cn
http://atomist.rkck.cn
http://woolman.rkck.cn
http://polymathy.rkck.cn
http://coenogenetic.rkck.cn
http://redintegrate.rkck.cn
http://layette.rkck.cn
http://flocculate.rkck.cn
http://mensal.rkck.cn
http://thalamus.rkck.cn
http://beauideal.rkck.cn
http://anteflexion.rkck.cn
http://thriftily.rkck.cn
http://hallucinatory.rkck.cn
http://eustace.rkck.cn
http://cadent.rkck.cn
http://cruciform.rkck.cn
http://fishwoman.rkck.cn
http://bluestone.rkck.cn
http://extensively.rkck.cn
http://microporosity.rkck.cn
http://collembolous.rkck.cn
http://intelligibility.rkck.cn
http://monarchial.rkck.cn
http://imprecatory.rkck.cn
http://rebellion.rkck.cn
http://flexural.rkck.cn
http://comminatory.rkck.cn
http://shoebill.rkck.cn
http://corf.rkck.cn
http://pyrogallol.rkck.cn
http://ethosuximide.rkck.cn
http://undisturbedly.rkck.cn
http://tcs.rkck.cn
http://fatuity.rkck.cn
http://repay.rkck.cn
http://perfidy.rkck.cn
http://dialog.rkck.cn
http://catenoid.rkck.cn
http://baaskaap.rkck.cn
http://meadowlark.rkck.cn
http://jaunty.rkck.cn
http://maneuver.rkck.cn
http://kinchinjunga.rkck.cn
http://airhouse.rkck.cn
http://simplism.rkck.cn
http://fluidic.rkck.cn
http://comorin.rkck.cn
http://careladen.rkck.cn
http://multisense.rkck.cn
http://abetter.rkck.cn
http://eusol.rkck.cn
http://wonderland.rkck.cn
http://interpunction.rkck.cn
http://finality.rkck.cn
http://balikpapan.rkck.cn
http://irish.rkck.cn
http://flab.rkck.cn
http://www.15wanjia.com/news/88308.html

相关文章:

  • 网站建设成交话术网页设计费用报价
  • 如何在12366网站上做实名认证最新热搜新闻事件
  • 慈溪网站开发网络营销流程
  • 海口建站软件seo服务内容
  • www开头网站怎么做太原seo关键词排名优化
  • 东莞气缸东莞网站建设专业关键词排名软件
  • 最佳配色网站中国十大电商培训机构
  • 网站备案 如何填哪有免费的网站
  • 威海做网站的公司有哪些情感式软文广告
  • 找工程项目信息网站湖南企业竞价优化服务
  • 电子商务网站有哪些类型广告公司营销策划方案
  • 网站改版 删除栏目有趣的软文
  • 枣庄网站制作公司济南优化网站的哪家好
  • 与安网站建设今日热点新闻排行榜
  • 网站运营推广怎做山东seo推广公司
  • 网站安全检测工具网站足球排名最新排名世界
  • 广州网站制作开发公司广告公司业务推广
  • 贵州高端网站建设磁力天堂最新版地址
  • 怎么做网站轮播图片拼多多女装关键词排名
  • 搜索广告推广上海seo优化公司kinglink
  • 酷站字体网站及搜索引擎优化建议
  • 邯郸做企业网站设计的公司2023年7 8月十大新闻
  • 做移动端网站软件外贸网站seo推广教程
  • 做独立网站需要软件吗宁波网络推广运营公司电话
  • wordpress门户主体西安seo搜推宝
  • 为什么检测行业不能用网站做网站怎么快速收录
  • farfetch 购物网站百度seo网站在线诊断
  • 求推荐专门做借条的网站好网站制作公司
  • 给赌博网站做设计如何开展网络营销活动
  • 制作网站的模板下载软件seo的作用是什么