Сравнение потоков - PullRequest
       1

Сравнение потоков

2 голосов
/ 08 сентября 2011

Я пытаюсь обобщить мои источники данных в моем приложении C ++ с помощью потоков.Тем не менее, мой код также использует менеджер ресурсов, который функционирует аналогично фабрике, за исключением того, что его основная цель состоит в том, чтобы один и тот же ресурс не загружался в память дважды.чтобы сделать это, он, очевидно, должен сделать некоторые проверки.Есть ли разумный способ (удобочитаемый и эффективный) для реализации этого, если менеджер ресурсов имеет потоки данных в качестве входных данных?

Ответы [ 3 ]

4 голосов
/ 08 сентября 2011

Вы не можете "сравнивать" потоки данных. Потоки не являются контейнерами; это потоки данных .


Кстати, cout << a == b - это (cout << a) == b; Я думаю, что вы имели в виду cout << (a==b).

2 голосов
/ 08 сентября 2011

Уровень абстракции, где идентичность данных намного выше ваших потоков.Подумайте, что бы ваш поток делал с этой информацией, если бы знал это.Это не может повлиять на это, это просто набор данных.С точки зрения интерфейса поток не обязательно даже имеет конец.Ты бы нарушил наименьшее удивление для меня, если бы попытался привязать к нему идентичность на этом уровне.Вы можете хэшировать данные при загрузке в ResourcePtr, но ключ к пути к файлу, вероятно, так же хорош.

0 голосов
/ 08 сентября 2011

Как сказал Томалак, вы не можете сравнивать потоки.Вам нужно будет обернуть их в некоторый класс, который ассоциирует с ними идентификатор, возможно, на основе абсолютного пути, если они все связаны с файлами в файловой системе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...